【发布时间】:2011-10-01 02:19:43
【问题描述】:
我正在尝试将以下代码作为子进程运行
#include<stdio.h>
int main()
{
int a;
printf("Hello\n");
fprintf(stderr, "Hey\n");
scanf("%d", &a);
printf("%d\n", a);
return 0;
}
这个脚本工作正常:写入标准输入,从标准输出和标准错误读取。
#!/usr/bin/python
import subprocess
p1=subprocess.Popen("/mnt/test/a.out", stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
p1.stdin.write('1\n')
print p1.stdout.readline()
print p1.stderr.readline()
print p1.stdout.readline()
但是,即使 C 程序在要求任何输入之前确实打印到标准输出,此脚本也无法从标准输出读取任何输出并被阻塞在那里。为什么我无法从 stdout 读取任何内容?
#!/usr/bin/python
import subprocess
p1=subprocess.Popen("/mnt/test/a.out", stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
print p1.stdout.readline()
p1.stdin.write('1\n')
print p1.stderr.readline()
print p1.stdout.readline()
【问题讨论】:
标签: python subprocess popen