lezione 10

processi e pipe

fork, exec e comunicazione base.

livello: avanzato durata: 32 min output: tool di sistema badge: c essentials

processi

#include <unistd.h>
pid_t pid = fork();
if (pid == 0) { execlp("ls", "ls", NULL); }

pipe

int fd[2];
pipe(fd);

funzioni

int sum(int a, int b) { return a + b; }

input/output

#include <stdio.h>
printf("ciao\n");

esercizi

avvia un processo figlio con fork/exec.

pid_t pid = fork();
if (pid == 0) { execlp("ls", "ls", NULL); }

panoramica

In questo capitolo su processi e pipe lavoriamo su processi, pipe, funzioni, input/output per creare micro-pattern riutilizzabili.

lavora in sequenza: leggi, prova, modifica gli snippet e annota i trade-off principali.

badge: c essentials

obiettivi

  • capire e applicare processi in uno scenario reale
  • capire e applicare pipe in uno scenario reale
  • capire e applicare funzioni in uno scenario reale
  • capire e applicare input/output in uno scenario reale

scheda rapida

#include <unistd.h>
pid_t pid = fork();
if (pid == 0) { execlp("ls", "ls", NULL); }

adatta questo scheletro agli esempi della lezione.

tips

  • compila con warning elevati
  • controlla ogni return code
  • libera la memoria allocata
  • usa header guard
  • mantieni funzioni corte
  • mantieni processi leggibile

tip: documenta ogni scelta architetturale.

mini progetto

crea un comando che avvia un processo figlio.

  • fork
  • exec
  • gestisci exit

output atteso: processo avviato.

checklist

  • ho eseguito gli snippet e controllato l'output
  • ho annotato almeno 2 trade-off
  • ho completato il mini progetto
  • ho salvato un riepilogo personale
start a brief