Python 无法使用子进程Popen和管道读取进程
我用c编写了下一个程序: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
#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()