Sono esempi (ve ne proporrò una caterva, preparatevi...) di interazione fra processi, nel listato qui sopra non mi è chiaro (ho già fatto man exit..) perchè con exit 0 status valga 0 ecodice:#include <stdio.h> #include <sys/wait.h> #include <unistd.h> main(int argc, char **argv) { int sono_il_padre; int figlio_defunto, status; sono_il_padre = fork(); if (sono_il_padre) { figlio_defunto = wait(&status); printf("\n E` terminato il processo %d, lo stato e` %d\n", figlio_defunto, status); fflush(stdout); } else { printf("\n figlio: nasco e muoio"); fflush(stdout); exit(atoi(argv[1])); } }
exit=1 -> status=256
exit=2 -> status=512
exit=3 -> status=768
non colgo il legame fra le coppie di valori... (a dire il vero non colgo nemmeno l'utilità del programma :gren: )..
Mi ero fermato al fatto che se un programma/processo termina e ritorna 0 è tutto ok, per i valori restituiti (-1, 1, 2) a seconda del programma c'è una codifica del tipo di errore, questa è la mia esperienza delle applicazioni su unix.. Thanks

Rispondi quotando
E cmq non e` casuale, su UNIX e` cosi`. Del parametro passato ad exit(), il valore di uscita e` memorizzato nel byte basso (i bits 0-7), mentre a seguito di una wait() esso viene memorizzato nel byte alto (8-15). Tutto sempre in riferimento alla parola bassa (0-15).
