经过一些研究,对于如何让一个子进程理解父进程在Windows下已经死亡/崩溃/退出,这会使子进程在无人值守的情况下运行,这一点没有明确的答案。有一些建议,如:
总是涉及到一个已知的父母已经开始了孩子。但有些情况下,孩子不知道自己是孩子,因为孩子不是孩子,父母也不想杀死孩子。在
此外,母公司没有控制权。实际案例:
setuptools
入口点设施安装。在如上所述,要执行的Python是Windows版本。setuptools生成的可执行文件将找到它,并用附带的脚本作为子进程执行。在
因为在Cygwin下运行,以下可能会失败:
Ctrl-c
将杀死父级(stub setuptools可执行文件)python.exe
)在这种情况下,如上所述,不可能控制父对象,而子对象不知道它是子对象(因为它也可以作为Python脚本直接执行)
解决方法如下
如果进程的PID与等待父进程发出信号的父进程的PID不同(死亡),则在单独的线程中运行。这在Python3.3下工作,其中
os.getppid()
实际上返回window下父级的PID它不需要修改父线程,也不需要预先将子线程编码为子线程,因为它会检查线程必须在何处运行或不运行
重构为函数并添加了来自注释的改进
相关问题 更多 >
编程相关推荐