Я написал RPC-сервер foo
на Python, который я деамонизировал с
start-stop-daemon --start --quiet --background \
--make-pidfile \
--pidfile /var/run/foo.pid \
-- /opt/foo
Все работает нормально, за исключением того, что каждое использование subprocess.check_call(some_cmd)
или os.popen(some_cmd).read(1048576)
в моем демоне возвращает пустую строку по сравнению со случаем, когда я запускаю foo
на переднем плане.
Внешняя программа some_cmd
все еще успешно выполняется (как я вижу в журналах), но у меня нет доступа к материалам, которые она выводит на стандартный вывод.
Почему это так и какие изменения я могу внести в вызов start-stop-daemon
или в мой код Python, чтобы исправить это?
PS: я обнаружил, что только вывод некоторых команд теперь пуст: subprocess.check_output('echo "Hello World"', shell=True)
по-прежнему ведет себя нормально, тогда как вывод subprocess.check_output('/etc/init.d/apache2 --nocolor reload', shell=True)
теперь пуст.