Объединить многопроцесс с подпроцессом stdinPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Объединить многопроцесс с подпроцессом stdin

Сообщение Anonymous »

Я пытаюсь заполнить ввод для моего FZF SRIPT из нескольких параллельных процессов. < /p>

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

fzf = subprocess.Popen(
[
"fzf",
],
stdin=subprocess.PIPE,
text=True,
)
< /code>
Поэтому я хочу, чтобы я был в состоянии записать напрямую в эту трубу из других перекачков. идентификатор. Как это: < /p>
python_process = multiprocessing.Process(
target=generate_input,
args=(fzf.stdin.fileno(),),
)
< /code>
В моем процессе я написал так: < /p>
os.dup(write_fd) # I thought it could help to resolve error with fd.
os.write(write_fd, "Any string".encode("utf-8"))
Это привело к Oserror: [Errno 9] Descriptor File . Я не понимаю, почему я получаю это, потому что все дескрипторы файлов унаследованы от родительского процесса. Чтобы убедиться, что я попытался позвонить в этот код в моем детском процессе. < /P>
_fd_types = (
("REG", stat.S_ISREG),
("FIFO", stat.S_ISFIFO),
("DIR", stat.S_ISDIR),
("CHR", stat.S_ISCHR),
("BLK", stat.S_ISBLK),
("LNK", stat.S_ISLNK),
("SOCK", stat.S_ISSOCK),
)

for fd in range(100):
try:
s = os.fstat(fd)
except:
continue
for fd_type, func in _fd_types:
if func(s.st_mode):
break
else:
fd_type = str(s.st_mode)
print(f"fd: {fd}, type: {fd_type}")
< /code>
Этот фрагмент напечатал, что мой дескриптор файла был доступен через функцию OS.FStat. Или, по крайней мере, некоторые проекты, которые используют Python таким образом. Я понимаю, что я могу подойти к этому другим способом.

Например: < /p>
child = subprocess.Popen(
[
"my_python_program --child",
],
stdout=subprocess.PIPE,
)
fzf = subprocess.Popen(
[
"fzf",
],
stdin=child.stdout,
)
< /code>
macm1, python3.12 < /p>
Но я действительно хочу научиться этому более "основным". Я буду очень благодарен за любую связанную информацию, спасибо.

Подробнее здесь: https://stackoverflow.com/questions/794 ... cess-stdin
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Атомность регулярного файла Linux: многопроцесс, «Flip-Flopping» старые/новые значения
    Anonymous » » в форуме Linux
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Проблема с подпроцессом.Popen в Python 3
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как завершить приложение, открытое подпроцессом Python
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как завершить приложение, открытое подпроцессом Python
    Anonymous » » в форуме Linux
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как завершить приложение, открытое подпроцессом Python
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

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