Python 无法使用子进程Popen和管道读取进程

Python 无法使用子进程Popen和管道读取进程,python,subprocess,stdout,Python,Subprocess,Stdout,我用c编写了下一个程序: #include <stdio.h> int main() { while(1) { printf("hey\n"); } return 0; } 但这条线阻碍了: proc.stdout.read() 你知道为什么吗?以前有人遇到过这种情况吗?您有一个无限while循环,它无限输出“hey\n”。因此,标准正在增长 如果您在Unix系统上,可能需要在可执行文件前面添加“/”。就像这样,“./procname.o” 例如,cexample.c

我用c编写了下一个程序:

#include <stdio.h>

int main()
{

while(1)
{

printf("hey\n");

}

return 0;

}
但这条线阻碍了:

proc.stdout.read()

你知道为什么吗?以前有人遇到过这种情况吗?

您有一个无限while循环,它无限输出“hey\n”。因此,标准正在增长

如果您在Unix系统上,可能需要在可执行文件前面添加“/”。就像这样,“./procname.o”

例如,cexample.c

#include <stdio.h>

int main()
{

printf("hey\n");

return 0;

}
运行:python pyexample.py

from subprocess import Popen, PIPE

def main():

proc = Popen("./a.out", stdin=PIPE, stdout=PIPE, shell=True)
print proc.stdout.read()


if __name__ == '__main__':
main()
输出:


两个脚本都在执行
,而True
没有任何
时间。sleep()
或等效程序。也许你是在跑stackoverflow?你说的“这条线阻塞”是什么意思?你是在回溯还是什么?你在执行一个
.o
文件?是吗?子进程是否正在向stderr写入任何内容?大概-我的意思是进程开始休眠(阻塞状态,等待函数read()返回输出,这将导致一些系统调用)绘图-是的,显然是:)Luke Woodward-我现在检查一下
from subprocess import Popen, PIPE

def main():

proc = Popen("./a.out", stdin=PIPE, stdout=PIPE, shell=True)
print proc.stdout.read()


if __name__ == '__main__':
main()