痛苦地解决了多线程程序在打开文件和在一个线程中设置'close on exec'位和在另一个线程中调用 subprocess.Popen 之间存在竞争风险 - 这可能导致意外的句柄被传递给第二个孩子,在我看来,我需要用锁来保护这种访问(我知道可以从 subprocess.Popen 关闭所有句柄,但这可能有点过头了)。
那会安全吗?子进程将立即执行一个 shell,但我不确定 python 线程锁在这种情况下是如何表现的。
PS我知道linux有一个'close on exec'位用于打开,但我没有在linux上运行,无论如何,python tempfile(或至少是2.6)不使用该设施。
当然,理想情况下,python 会自己处理这种讨厌的事情,但我找不到任何暗示它可能的东西。