c_program = subprocess.Popen(["ARGS","HERE"],
stdin = subprocess.PIPE, # PIPE is actually just -1
stdout= subprocess.PIPE, # it indicates to create a new pipe
stderr= subprocess.PIPE #not necessary but useful
)
然后可以使用以下命令读取进程的输出:
data = c_program.stdout.read(n) #read n bytes
#or read until newine
line = c_program.stdout.readline()
我对C语言的了解非常有限,但从有限的研究来看,你似乎可以read data from ^{}和write data to ^{},尽管如果你用C语言编写了在终端上运行的程序,在这里也可以用同样的方法将数据写入屏幕并读取用户的输入。(您可以想象.stdout作为终端屏幕,python将数据写入.stdin用户输入)
如果使用
subprocess.Popen
从python启动C/C进程,那么您的两个程序可以通过stdin
和stdout
管道进行通信:然后可以使用以下命令读取进程的输出:
请注意,这两种方法都是阻塞方法,尽管non blocking alternatives存在。你知道吗
还要注意,在python3中,这些将返回
bytes
对象,您可以使用.decode()
方法将其转换为str
。你知道吗然后,要向进程发送输入,只需写入stdin:
与上面的
read
一样,在python3中,这个方法需要一个bytes
对象。在将其写入管道之前,可以使用str.encode
方法对其进行编码。你知道吗我对C语言的了解非常有限,但从有限的研究来看,你似乎可以read data from ^{} 和write data to ^{} ,尽管如果你用C语言编写了在终端上运行的程序,在这里也可以用同样的方法将数据写入屏幕并读取用户的输入。(您可以想象
.stdout
作为终端屏幕,python将数据写入.stdin
用户输入)相关问题 更多 >
编程相关推荐