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