int status; status del figlio (uscita)
printf("Sono il padre, ho il pid: %d. Sto eseguendo il comando!\n",getpid());
Personalmente avrei voluto evitare di utilizzare la chiamata system, ma exec non funziona con il carattere >!!!
if(system("/bin/ls > lista.txt") -1) {
eseguo il comando
fprintf(stderr,"Errore %d in system().\n",errno);
_exit(errno);
printf("Sono il padre, ho il pid: %d. Ho generato il file e sto inviando l'allarme!\n",getpid());
alarm(1);
printf("Sono il padre, ho il pid: %d. Ho inviato l'allarme! Aspetto che il figlio printi il file e esca\n",getpid());
pause();
if(waitpid(pid,&status,0) <= 0) {
aspetto che termini il figlio
printf("Errore %d in waitpid().\n");
_exit(errno);
printf("Sono il padre, ho il pid: %d. Il figlio e' morto con stautus: %d, mi uccido!\n",getpid(), status);
return 0;
int child(){printf("Sono il figlio, ho il pid: %d. Sto aspettando che papa' generi il file!\n",getpid());
sigwait(SIGALRM,NULL);
printf("Sono il figlio, ho il pid: %d. Papa' ha generato il file, lo printo!\n",getpid());
if(system("cat lista.txt")
-1) { eseguo il comando
fprintf(stderr,"Errore %d in system().\n",errno);
_exit(errno);
printf("Sono il figlio, ho il pid: %d. Ho printato il file, informo papa' che l'ho fatto!\n",getpid());
alarm(1);
printf("Sono il figlio, ho il pid: %d. Ho detto a papa' quello che ho fatto...mi ammazzo!\n",getpid());
return 0;
void announce()