C'è un modo per un processo figlio in Python per rilevare se il processo genitore è morto?Rilevamento figlio processo genitore 'morte in Python
risposta
Si potrebbe ottenere la lettura dell'ID del processo principale molto presto nel processo e quindi il controllo, ma ovviamente è soggetto alle condizioni di gara. Il genitore che ha generato lo spawn potrebbe essere morto immediatamente, e anche prima che il processo potesse eseguire la sua prima istruzione.
A meno che non si abbia un modo di verificare se un dato PID si riferisce al genitore "atteso", penso che sia difficile farlo in modo affidabile.
Se il processo Python è in esecuzione su Linux e la chiamata di sistema prctl()
è esposta, è possibile utilizzare la risposta here.
Questo può causare l'invio di un segnale al bambino quando il processo genitore muore.
L'unico modo affidabile che conosco è creare una pipa appositamente per questo scopo. Il bambino dovrà tentare ripetutamente di leggere dalla pipe, preferibilmente in modalità non bloccante, o usando select. Otterrà un errore quando il tubo non esiste più (presumibilmente a causa della morte del genitore).
Supponendo che il genitore è vivo quando si inizia a fare questo, è possibile controllare se è ancora in vita in un ciclo occupato in quanto tale, utilizzando psutil:
import psutil, os, time
me = psutil.Process(os.getpid())
while 1:
if me.parent is not None:
# still alive
time.sleep(0.1)
continue
else:
print "my parent is gone"
Non è molto bello, ma ...
- 1. Come si condividono i dati tra un processo genitore e un processo figlio biforcuto in Python?
- 2. Processo figlio multiplo
- 3. Come creare un processo figlio a seconda del suo genitore?
- 4. fork() processi figlio e genitore
- 5. Come uccidere un processo figlio python creato con subprocess.check_output() quando il genitore muore?
- 6. ottenendo pid del processo figlio
- 7. Come restituisce fork() per il processo figlio
- 8. Ignora il segnale SIGINT nel processo figlio
- 9. Css hover, genitore e figlio
- 10. Relazione autoreferenziale/genitore-figlio in Entity Framework
- 11. Selettore jQuery figlio senza genitore
- 12. Chiusura finestra figlio minimizza genitore
- 13. Perché il processo figlio è ancora in vita dopo che il processo genitore è stato ucciso in Linux?
- 14. Comunicazione di processo in Python
- 15. Come ottenere variabili condivise tra processo figlio e genitore durante l'utilizzo di fork in perl
- 16. Multiprocessing di Python - AssertionError: può unire solo un processo figlio
- 17. Il processo figlio inizia dopo il processo principale
- 18. Come reindirizzare il processo figlio stdout/stderr nel processo principale stdout/stderr in Java?
- 19. Monitoraggio del decesso di un processo figlio
- 20. Domanda disegno OO - genitore/figlio (i) - circolare?
- 21. non può uccidere processo figlio su Windows
- 22. modifica genitore di un processo
- 23. uccidere il figlio di processo Se il padre viene ucciso in Python
- 24. Nodo evento processo figlio ascolta
- 25. Gestione della morte dell'assistente
- 26. gdb debug del processo figlio dopo il fork (modalità figlio in modalità follow-fork configurata)
- 27. Uscita flusso del processo figlio in Ruby
- 28. Come usare fork() per demonizzare un processo figlio indipendente dal suo genitore?
- 29. Perché il mio processo genitore non vede l'output del figlio finché non esce?
- 30. java.io.File (genitore, figlio) non funziona come previsto