起因是这样的,c++程序开发后 功能号和指令,校验需要人工去看对照二进制代码,量大还费力, 于是打算利用python 去调用 c++程序去校验指令, 首先要做的就是用python 获取c++程序的printf() 或cout 的输出;
环境linux python 3.8.x
以下代码实现,获取子程序输出
command='./ll.out'
p=subprocess.Popen(command, shell=False, stdout=subprocess.PIPE,stderr=subprocess.STDOUT) # 使用管道
while p.poll() is None:
line=p.stdout.readline().decode("utf8")
print(line)
shell =false 意思是command 使用的不是linux shell指令,如果要用shell 指令如ls 要将false 变成true, 通过指定stderr=subprocess.STDOUT,将子程序的标准错误输出重定向到了标准输出,以使我们可以直接从标准输出中同时获取标准输出和标准错误的信息。 p.poll() 返回子进程的返回值,如果为None 表示 c++子进程还未结束. p.stdout.readline() 从 c++的标准输出里获取一行.