Si potrebbe anche creare un socket o un FIFO e leggerli. La FIFO è particolarmente semplice: collega l'output standard di tuo figlio con FIFO e leggi. La lettura bloccherà fino a quando il bambino non esce (per qualsiasi motivo) o finché non emette alcuni dati. Quindi avrai bisogno di un piccolo ciclo per scartare i dati di testo indesiderati.
Se si ha accesso alla fonte del bambino, aprire la FIFO per scrivere quando inizia e poi semplicemente dimenticarsene. Il sistema operativo pulirà il descrittore di file aperto quando il bambino termina e il processo "genitore" in attesa si sveglierà.
Ora questo potrebbe essere un processo che non hai avviato o non possiedi. In tal caso, è possibile sostituire l'eseguibile binario con uno script che avvia il binario reale ma aggiunge anche il monitoraggio come spiegato sopra.
fonte
2009-07-21 07:47:41
È corretto avere un tale ciclo di occupato? – CsTamas
Beh, non vuoi renderlo troppo occupato; dovresti 'usleep()' per un po 'dopo ogni 'kill()' che non trova il processo andato. Quindi devi trovare un equilibrio tra quanto è impegnato il sondaggio e quanto tempo è bene che il processo sia finito prima che tu lo noti. – chaos
Oh, 'usleep()' è diventato obsoleto mentre non guardavo, apparentemente. Sembra che dovresti ora 'nanosleep()' invece. – chaos