dav*_*off 6 python subprocess orphan
在python中,我有一个父进程,它生成了一些子进程.我遇到了一种情况,由于未处理的异常,父进程正在死亡,而子进程处于孤立状态.如何让孩子进程认识到他们失去了父母?
我尝试了一些代码,将子进程挂钩到每个可用信号,但没有一个被触发.从理论上讲,我可以在父进程周围进行一次巨大的尝试,以确保它至少可以给孩子们带来一个sigterm,但这样做不够优雅而且不是万无一失的.如何防止孤立进程?
在UNIX(包括Linux)上:
def is_parent_running():
try:
os.kill(os.getppid(), 0)
return True
except OSError:
return False
Run Code Online (Sandbox Code Playgroud)
请注意,在UNIX上,信号0不是真实信号.它仅用于测试给定的进程是否存在.请参阅kill命令手册.
小智 5
您可以socketpair()在创建子进程之前使用创建一对unix域套接字.父母的一端打开,另一端的孩子打开.当父进程退出时,套接字的结尾将关闭.然后孩子将知道它已退出,因为它可以select()/ poll()从其套接字读取事件并在那时接收文件结尾.
| 归档时间: |
|
| 查看次数: |
1482 次 |
| 最近记录: |