También puede crear un socket o un FIFO y leer en ellos. El FIFO es especialmente simple: conecte la salida estándar de su hijo con el FIFO y lea. La lectura se bloqueará hasta que el niño salga (por cualquier razón) o hasta que emita algunos datos. Por lo tanto, necesitará un pequeño bucle para descartar los datos de texto no deseados.
Si tiene acceso a la fuente del niño, abra el FIFO para escribir cuando se inicia y luego simplemente olvídese de ello. El sistema operativo limpiará el descriptor de archivo abierto cuando el niño termine y su proceso de "padre" en espera se activará.
Ahora bien, este podría ser un proceso que no inició ni tuvo. En ese caso, puede reemplazar el ejecutable binario por un script que inicie el binario real pero también agregue monitoreo como se explicó anteriormente.
¿Está bien tener ese ajetreo? – CsTamas
Bueno, no quiere que esté demasiado ocupado; deberías 'usleep()' por un tiempo después de cada 'kill()' que no encuentra que el proceso se haya ido. Luego debe establecer un equilibrio entre cuán ocupada está su encuesta y cuánto tiempo está bien para que el proceso desaparezca antes de que se dé cuenta. – chaos
Oh, 'usleep()' se volvió obsoleto cuando aparentemente no estaba mirando. Parece que ahora debes 'nanosleep()' en su lugar. – chaos