Python 当父子侦听同一端口时会发生什么情况?
我有一个父进程,它在启动时启动一个线程,该线程创建一个侦听端口X的TCP服务器实例。在此之后,父进程开始分叉子进程(只做很少的事情并退出)。请注意,这些子进程从父进程继承FD,因此最终侦听端口XPython 当父子侦听同一端口时会发生什么情况?,python,sockets,networking,operating-system,fork,Python,Sockets,Networking,Operating System,Fork,我有一个父进程,它在启动时启动一个线程,该线程创建一个侦听端口X的TCP服务器实例。在此之后,父进程开始分叉子进程(只做很少的事情并退出)。请注意,这些子进程从父进程继承FD,因此最终侦听端口X 父程序有一个处理C++端口的请求,但子进程没有这样的处理程序(它是一个OS .ExcVE)- ED C++程序) 我知道子进程可以关闭所有FD,在这种情况下不会出现上述情况。端口X上的传入请求会发生什么情况?它是如何处理的 这是我到目前为止观察到的。。。 父对象中的tcp请求处理程序在收到请求时执行co
父程序有一个处理C++端口的请求,但子进程没有这样的处理程序(它是一个OS .ExcVE)- ED C++程序)
我知道子进程可以关闭所有FD,在这种情况下不会出现上述情况。端口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
在操作系统级别,这不应该有任何问题。这基本上就是预分叉服务器的工作方式:
在您的情况下,如果该行为干扰了应用程序的其余部分,那么最好在fork之后,但在调用exec之前,关闭子应用程序中的侦听套接字。这与(非特定于python的)相同