我有一個家長在啓動時會揭開序幕,創建在端口X.偵聽此之後TCP Server實例的一個線程,家長開始分叉關子進程(這做幾件事情並退出)。請注意,這些子進程從父進程繼承fds,因此最終在端口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
這包括一些相同的理由,作爲http://stackoverflow.com/questions/670891/is-there-a-way-for-multiple-processes-to-share-a-listening-socket(而不是Python特定) – 2012-02-03 18:39:46