2016-08-10 2 views
1

Я пытаюсь работать с двумя подпроцессами. Открываю первый и посылаю ему что-то, потом открываю второй и посылаю ему что-то. В обоих случаях я отправляю с stdin.writeНевозможно переключиться между двумя подпроцессами

process1 = subprocess.Popen([path], stdin = subprocess.PIPE,) 
process1.stdin.write('some string1') 
process2 = subprocess.Popen([path], stdin = subprocess.PIPE,) 
process2.stdin.write('some string 2') 

Но когда я хочу снова отправить Process1, я делаю то же самое, но он не сделает ничего. Как я могу снова связаться с процессом 1?

+0

теперь я увидел, что когда я снова напишу в process1, на самом деле это делается в процессе2. Зачем? у каждого есть идентификатор процесса нет? и как я могу его изменить? это означает, что если я открою два блокнота, по какой-то причине, когда я являюсь tyring, чтобы написать что-то на первом его ему во втором подпроцессе – user3903403

ответ

0

Он должен просто работать.

Например:

$ cat 1.py 
import subprocess 

process1 = subprocess.Popen("cat > file1", shell=True, stdin=subprocess.PIPE) 
process1.stdin.write('some string1\n') 
process2 = subprocess.Popen("cat > file2", shell=True, stdin=subprocess.PIPE) 
process2.stdin.write('some string 2\n') 
process1.stdin.write('some string3\n') 

Afther, что запуск программы и проверка результата:

$ python 1.py 
$ cat file1 
some string1 
some string3 
$ cat file2 
some string 2 

Итак, как вы можете видеть, он просто работает.

+0

, теперь я увидел, что, когда я снова напишу в process1, на самом деле это делается в process2. Зачем? у каждого есть идентификатор процесса нет? и как я могу его изменить? – user3903403

+0

@ user3903403: Что значит? Все работает так, как должно. См. Мой пример –

+0

Я имел в виду, что в моем коде по какой-то причине процесс1 фактически отправляет и записывает в subprocess2, и я не знаю почему. это потому, что их путь один и тот же? – user3903403

Смежные вопросы