Объект Popen - это просто оболочка для дочерних процессов PID, stdin, stdout и stderr, а также некоторые удобные функции для их использования.
Итак, вопрос в том, зачем вам нужен доступ к объекту Popen? Хотите ли вы общаться с ребенком, прервать его или проверить, работает ли он еще?
В любом случае невозможно повторно получить объект Popen для уже запущенного процесса.
Правильный способ подойти к этому - запустить ребенка в качестве демона, как предложил Тобу. Частью процедуры демонизации процесса является закрытие stdin и stdout, поэтому вы не можете использовать их для общения с дочерним процессом. Вместо этого большинство демонов используют либо каналы, либо сокеты, чтобы позволить клиентам подключаться к ним и отправлять им сообщения.
Самый простой способ поговорить с дочерним элементом - открыть именованный канал из дочернего процесса, например, по адресу. / etc / my_pipe, откройте этот именованный канал из родительского / управляющего процесса и запишите / прочитайте / из него.
После быстрого взгляда на python-daemon мне кажется, что python-daemon поможет вам демонизировать ваш дочерний процесс, что сложно сделать правильно, но это не поможет вам в части обмена сообщениями. *
Но, как я уже сказал, я думаю, что вы должны сказать нам, почему вам нужен объект Popen для дочернего процесса, прежде чем мы сможем помочь вам в дальнейшем.