我有一个应用程序,其中父进程轮询服务器以获取下载作业,然后生成子进程以完成job.This循环,直到父进程处理某些作业为止。我需要确保子进程在父进程崩溃的情况下死亡。下面是一些机制-- 1.根据python的多进程模块--“当一个进程退出时,它会尝试终止它的所有守护进程。”因此,它尝试,但没有guarantee.So它不可靠。2.我可以在db中添加条目,映射为job.When _ process _id->jobId,它告诉哪个子进程正在下载哪个进程,父进程在轮询之前会启动哪个进程
我痛苦地发现,在多线程程序中,在一个线程中打开文件和设置“close on exec”位和在另一个线程中调用subprocess.Popen之间存在竞争风险-这可能会导致意外的句柄被传递给第二个孩子,在我看来,我需要用锁来保护这种访问(我知道从subprocess.Popen中关闭所有句柄是可能的,但这可能是过度杀伤力)。子进程将立即执行一个shell,但我不确定python线程锁在这种情况下的行为。PS我知道linux有一个'close on exec‘位来