【问题标题】:Not able to switch between two subprocess无法在两个子进程之间切换
【发布时间】:2016-12-16 11:14:28
【问题描述】:

我正在尝试使用两个子流程。 我打开第一个给他一些东西,然后我打开第二个给他一些东西。在这两种情况下,我都使用 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 通信?

【问题讨论】:

  • 现在我看到当我再次写入 process1 时,它实际上是在 process2 中执行的。为什么?每个人都有进程ID吗?我该如何改变它?意思是如果我打开两个记事本,出于某种原因,当我想在第一个上写一些东西时,它会在第二个子进程上写到它

标签: python python-2.7 subprocess


【解决方案1】:

它应该可以工作。

例如:

$ 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')

运行程序并检查结果:

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

所以,如您所见,它确实有效。

【讨论】:

  • 现在我看到当我再次写入 process1 时,它实际上是在 process2 中执行的。为什么?每个人都有进程ID吗?我该如何改变它?
  • @user3903403:你什么意思?一切正常。看我的例子
  • 我的意思是在我的代码中由于某种原因 process1 实际上发送和写入 subprocess2 我不知道为什么。是因为他们的路是一样的吗?
  • @user3903403:这取决于进程。如果您在两个终端中并行启动这些进程会发生什么?
  • 我必须从同一个脚本打开两个
猜你喜欢
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多