У меня есть родительский объект, который при запуске запускает поток, который создает экземпляр TCP-сервера, который прослушивает порт X. После этого родительский процесс начинает блокировать дочерние процессы (которые выполняют несколько действий и завершают работу).Обратите внимание, что эти дочерние процессы наследуют fds от родительского и, следовательно, в конечном итоге прослушивают порт X.
Родительская программа имеет обработчик для запросов, поступающих через порт X, но дочерний процесс не имеет такого обработчика (это os.execv () - ed C ++ program)
Я знаю, что дочерний процесс может закрыть все fds, и в этом случае описанная выше ситуация не возникнет.Что происходит с входящим запросом через порт X?Как это обрабатывается?
Вот что я наблюдал до сих пор ... Обработчик tcp-запроса в родительском элементе выполняет command.getstatusoutput (..), когда он получает запрос.В большинстве случаев он ведет себя как ожидалось (или так, как я ожидал) - выполнение вышеуказанной команды без каких-либо ошибок ... но иногда я получаю
File "/home/y/lib/python2.7/commands.py", line 61, in getstatusoutput
sts = pipe.close()
IOError: [Errno 10] No child processes