Alla morte del figlio, il padre deve intraprendere qualche azione particolare?Originariamente inviato da /dev/null
Non ci sto capendo più niente![]()
Sto facendo un programma che agisce in questo modo:
si connette a internet e quando riceve una richiesta crea un figlio con la funzione fork, ed il padre continua ad accettare richieste...
O installi un signal handler o fai un giro di polling con waitpid.Come faccio però a vedere quando il figlio muore, senza far bloccare il padre?
Potresti iniziare cosi` (attenzione: codice stilisticamente discutibile e non testato):
codice:while ( 1 ) { pid_t child_pid // ... attendo la connessione // creo il figlio pid = fork(); if ( pid < 0 ) { printf ( "Impossibile creare un figlio: %s.\n", strerror ( pid ) ); } if ( pid == 0 ) { // figlio // ... } // ora devo verificare la morte del figlio, ma come??? do { child_pid = waitpid(-1, NULL, WNOHANG); } while (child_pid > 0); if (child_pid < 0) { perror ("waitpid"); } }