未能使用子进程Popen和PIPE读出进程

时间:2017-03-04 12:02:39

标签: python subprocess stdout

我有下一个用c:

编写的程序
#include <stdio.h>

int main()
{

while(1)
{

printf("hey\n");

}

return 0;

}

和python中的这个程序

from subprocess import Popen, PIPE

def main():

    proc = Popen("procname.o", stdin=PIPE, stdout=PIPE, shell=True)

    while True:
        print proc.stdout.read()


if __name__ == '__main__':
    main()

但是这行阻止了:

proc.stdout.read()

任何想法为什么?有没有人遇到过这个?

1 个答案:

答案 0 :(得分:-2)

你有一个无限的while循环,它无限地输出“hey \ n”。所以,stdout正在增长。

如果您使用的是Unix系统,则可能需要在可执行文件前添加“./”。像这样,“。/ procname.o”。

例如,cexample.c

#include <stdio.h>

int main()
{

printf("hey\n");

return 0;

}

编译:gcc cexample.c

在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()

运行:python pyexample.py

输出: