代码之家  ›  专栏  ›  技术社区  ›  Alex B

Python Popen.waitpid返回“[Errno 10]无子进程”

  •  2
  • Alex B  · 技术社区  · 16 年前

    我有一个运行中的Python脚本,它执行一个外部命令并调用 Popen.communicate() . 然而,当我从一个C进程调用这个脚本时,它失败了 os.waitpid() 为什么?

    这看起来像 a certain bug in Python

    C进程分叉、更改其UID、GID和调用 setsid() 然后 execle()

    1 回复  |  直到 16 年前
        1
  •  1
  •   Alex B    16 年前

    在我的例子中,问题是C进程忽略了 SIGCHLD waitpid() 失败。

    解决方案: 将分叉后的C进程中的信号处理程序设置为 SIG_DFL ,如果你忽略了任何。