Процесс внутри демона немедленно завершается при использовании FIFOPython

Программы на Python
Anonymous
Процесс внутри демона немедленно завершается при использовании FIFO

Сообщение Anonymous »

У меня есть установка, которая выглядит примерно так, как показано в следующем примере:

Код: Выделить всё

from contextlib import contextmanager
import subprocess
import os
from pathlib import Path

import daemon

@contextmanager
def tmp_fifo(path: Path):
try:
os.mkfifo(path)
file = os.open(path, os.O_RDWR | os.O_NONBLOCK)
yield file
finally:
os.unlink(path)

with tmp_fifo(Path.home() / "sh.fifo") as fifo, open("dout.log", "w+") as outfile:
context = daemon.DaemonContext()
with context:
with subprocess.Popen(["sh"], stdin=fifo, stdout=outfile) as popen:
popen.wait()
По сути, я пытаюсь перенаправить оболочку в FIFO.
Без демонизации это работает; то есть я мог бы написать

Код: Выделить всё

from contextlib import contextmanager
import subprocess
import os
from pathlib import Path

@contextmanager
def tmp_fifo(path: Path):
try:
os.mkfifo(path)
file = os.open(path, os.O_RDWR | os.O_NONBLOCK)
yield file
finally:
os.unlink(path)

with tmp_fifo(Path.home() / "sh.fifo") as fifo, open("dout.log", "w+") as outfile:
with subprocess.Popen(["sh"], stdin=fifo, stdout=outfile) as popen:
popen.wait()
что позволяет мне вводить команды в FIFO и видеть результаты в файле журнала. Как мне воспроизвести желаемое поведение с помощью демона? Я попытался переместить перенаправление файлов в конструктор DaemonContext, но это не помогло. Я также просмотрел параметры конфигурации, но ни один из них не показался мне подходящим.


Подробнее здесь: https://stackoverflow.com/questions/790 ... using-fifo

Вернуться в «Python»