Почему программа выхода из Plipe () для выхода из труб, когда Pipe пишет в Stdout?

StackOverflow https://stackoverflow.com/questions/1586795

  •  22-09-2019
  •  | 
  •  

Вопрос

У меня есть приложение для сервера, которое записывает дескриптор файла Popen («MyCommand», «W») в отдельном потоке, и, если команда передается в Popen (), приводит к любому выводу в STDOUT или Stderr, My Application выходит. Тем не менее, это только проблема, когда мое серверное приложение было вызвано через inetd, если я использовал SSH для запуска сервера, у него нет этой проблемы.

Точно так же, когда мое серверное приложение считывается из дескриптора файла Popen ("mycommand2", "r") в отдельном потоке, и если команда передается в Popen (), приводит к любым выводам STDERR (stdin идет в мою трубу), в приложение выходит. Опять же, это происходит только с призывом inetd, а не SSH -призывом.

Это было полезно?

Решение

Вам нужно закрыть все существовавшие FDS процесса, прежде чем открыть трубу, а затем перенаправление ввода/вывода. Это потому, что если INETD, процесс работает как демон.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top