codice:
#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]));
}
}
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 e
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