Предполагая, что вы хотите общаться с «подпроцессом» и должны делать это, используя его стандартные потоки ввода / вывода, вы можете создать оболочку вокруг исполняемого файла, которая отображает его stdin / out / err на сокет или именованный канал.
Программа, которая намеревается управлять «подпроцессом», может в любое время запускать и останавливать связь. Возможно, вам придется предусмотреть и механизм блокировки.
Затем, если вы работаете в Linux, вы можете получить доступ к stdin / out / err запущенного процесса через /proc/<pid>/fd/<0,1,2>
. Вы не будете подключать их к объекту subprocess.Popen, но open('/proc/<pid>/fd/1', 'rb')
будет вести себя как Popen().stdout
.