Как вы передаете данные в STDIN программы из разных локальных / удаленных процессов в Python? - PullRequest
1 голос
/ 25 сентября 2010

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

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

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

Ответы [ 2 ]

2 голосов
/ 25 сентября 2010

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

/proc/$PID/fd/0

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

1 голос
/ 25 сентября 2010

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

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

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

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

...