Как вы передаете данные в STDIN программы из разных локальных / удаленных процессов в Python?

Стандартные потоки связаны с программой. Итак, предположим, что есть программа, уже работающая в некотором роде (мне все равно, как и каким образом). Цель состоит в том, чтобы создавать каналы для STDIN программы из разных процессов (или программ), которые запускаются локально или удаленно и поточно передают данные в нее асинхронно.

Доступная информация: (1) адрес хоста и (2) только pid программы. Как реализовать оба случая в Python в этом случае?

Редактировать: Я должен был упомянуть это предположение. Предполагаемая операционная система – это Linux с (справедливым) последним ядром .

2 Solutions collect form web for “Как вы передаете данные в STDIN программы из разных локальных / удаленных процессов в Python?”

Это не переносимо, но на многих Linux-системах вы можете написать

/proc/$PID/fd/0 

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

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

Тем не менее, если вы укажете очень конкретную и хорошо идентифицированную платформу (в идеале, включая точную версию и версию операционной системы, о которой идет речь, поскольку безопасность, как правило, затягивается в последовательных выпусках по сравнению с предыдущими), вполне возможно, что там будут доступны трюки для ваших целей. Например, вы можете использовать некоторые из перехватов, которые операционная система намеревается использовать для «удаленных отладчиков», прикрепленных к уже существующим процессам, – если, например, ваша конкретная ОС предлагает такие перехватчики (не все делают !).

Но, если вы хотите кросс-платформенное решение, никоим образом.

Поэтому я рекомендую вам отредактировать свой вопрос и, в частности, заменить один из тегов на имя «единственной» ОС, которую вам действительно нужно поддерживать (в отредактированном тексте Q, пожалуйста, будьте как можно более конкретными относительно точных версий и вам абсолютно необходимо поддерживать – Python очень мало что может сделать с этой проблемой, так как вам нужно работать на определенных уровнях ОС, поэтому нет необходимости точно подобным образом определять версию Python).

  • Python считывает из подпроцесса stdout и stderr отдельно при сохранении порядка
  • Как проверить, есть ли у stdin некоторые данные?
  • Линейная буферизация stdout не выполняется на MINGW / MSYS Python 2.7.3
  • используя оператор Python с 'с помощью sys.stdout
  • Почему мой вывод python задерживается до конца программы?
  • Некоторые команды Python не попадают в Stdout
  • Захват stdout из скрипта в Python
  • Проблемы, связанные с перехватом подпроцесса в режиме реального времени
  • Python - лучший язык программирования в мире.