【发布时间】:2012-02-26 08:20:27
【问题描述】:
我有一个父进程,当它启动时,它会启动一个线程,该线程创建一个 TCP 服务器实例,该实例侦听端口 X。此后,父进程开始分叉子进程(它们做一些事情并退出)。请注意,这些子进程从父进程继承 fd,因此最终会监听端口 X。
父程序有一个处理程序来处理端口 X 上的请求,但子进程没有这样的处理程序(它是一个 os.execv()-ed C++ 程序)
我知道子进程可以关闭所有fds,这样就不会出现上述情况。端口 X 上的传入请求会发生什么情况?它是如何处理的?
这是我目前观察到的... 父母中的 tcp 请求处理程序在收到请求时执行 commands.getstatusoutput(..)。大多数时候,它的行为符合预期(或我预期的方式) - 执行上述命令没有任何错误......但偶尔我得到
File "/home/y/lib/python2.7/commands.py", line 61, in getstatusoutput
sts = pipe.close()
IOError: [Errno 10] No child processes
【问题讨论】:
-
这涵盖了与stackoverflow.com/questions/670891/… 相同的部分内容(不是特定于python)
标签: python sockets networking operating-system fork