У меня есть часть сетевого программного обеспечения C, которая в настоящее время работает в режиме прослушивания и разветвления. Он прослушивает серверный сокет и принимает входящее соединение. Затем он вызывает функцию основного сервера, предоставляя новый принятый сокет.
Теперь я пытаюсь заставить это программное обеспечение работать и за xinetd (в зависимости от некоторого параметра времени выполнения). Я попытался напрямую вызвать функцию основного сервера, предоставив дескриптор файла 0 вместо принятого сокета, но этот метод просто не работает. Программа немедленно останавливается с SIG_PIPE.
Есть ли очевидная причина для такого поведения? Моя основная функция выполняет некоторые вызовы сокетов низкого уровня и обработку сигналов. Это должно работать за xinetd?