我有下一个用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()
任何想法为什么?有没有人遇到过这个?
答案 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
输出:
哎