This question already has answers here:
Communicate multiple times with a process without breaking the pipe?
(4个答案)
5年前关闭。
我正在尝试将输入管道传递给在Python中作为子进程打开的程序。使用communication()可以实现我想要的功能,但是只执行一次,然后等待子进程终止,然后再继续进行操作。
在功能上是否有类似于communication()的方法或模块,但允许与子进程进行多次通信?
这是一个例子:
(4个答案)
5年前关闭。
我正在尝试将输入管道传递给在Python中作为子进程打开的程序。使用communication()可以实现我想要的功能,但是只执行一次,然后等待子进程终止,然后再继续进行操作。
在功能上是否有类似于communication()的方法或模块,但允许与子进程进行多次通信?
这是一个例子:
import subprocess
p = subprocess.Popen('java minecraft_server.jar',
shell=True,
stdin=subprocess.PIPE);
//Pipe message to subprocess console here
//Do other things
//Pipe another message to subprocess console here
如果可以在不使用子流程的情况下以更简单的方式完成此操作,那也很好。 最佳答案
您可以根据需要将write
转换为p.stdin
(以及每次flush
,以确保实际发送了数据)。问题仅在于您想确保返回结果(因为很难说服其他进程使用而不是缓冲其输出!-),但是由于您甚至没有在stdout=
类中设置Popen
,因此很明显对你来说不是问题。 (当是是一个问题,并且您确实需要击败另一个进程的输出缓冲策略时,pexpect
或Windows上的wexpect
是最好的解决方案-我经常在stackoverflow上推荐它们,但不要这样做)暂时没有网址,因此,请自己搜索(如果是,则与您的示例相反,您确实有此需要)。
09-12 00:04