Использование python для подключения процессов stdin / stdout - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть скрипт bash (fifo1 и fifo2 создаются с помощью mkfifo):

processor <fifo1 >fifo2 &
source >fifo1 &
sink <fifo2 &

, который реализует график:

source -> processor -> sink

Как бы я поступил так в скрипте Python?

1 Ответ

0 голосов
/ 30 апреля 2018

Для игры с системными процессами вы можете использовать Подпроцесс и Popen .

Затем для обмена данными между процессами вы можете использовать ТРУБА .

Примеры кодов также предоставляются здесь

Вот простая реализация:

p1.py

import subprocess

proc = subprocess.Popen(['python', 'temp2.py'], stdin=subprocess.PIPE ,stdout=subprocess.PIPE)

stdout_value, stderr_value = proc.communicate()

print('\nStdout value' + repr(stdout_value) + '\n')
print('\nStderr value' + repr(stderr_value) + '\n')

Этот код вызывает программу temp2.py temp2.py

import subprocess

proc = subprocess.Popen(['ls'], stdin=subprocess.PIPE ,stdout=subprocess.PIPE
                        , stderr=subprocess.PIPE)

stdin_value, stdout_value = proc.communicate()
print('\nStdin value' + repr(stdin_value) + '\n')
print('\nStdout value' + repr(stdout_value) + '\n')

temp2.py выполнит команду ls в вашем текущем каталоге и сохранит результат.

Чтобы получить более подробную информацию о том, как использовать сохраненное значение из каналов, отметьте здесь существует множество вариантов использования системного ввода, и это зависит от вашей реализации, поэтому обратитесь к приведенным выше документам для получения дополнительной помощи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...