我有以下C程序
#include <stdio.h>
int main()
{
char a[200];
a[199] = 0;
printf("Enter some input ->\n");
scanf("%s" ,a);
printf ("\nInput was %s\n", a);
return 0;
}
我尝试以下列方式写入一些输入:
from subprocess import *
a = Popen(["my_prog.elf", stdin=PIPE)
a.stdin.write("MyInput")
然而这似乎没有用......任何想法如何解决这个问题?
**编辑**
有没有人知道为什么a.stdin.flush()
不会工作?
答案 0 :(得分:2)
scanf
读取整行,直到它读取新行字符\n
,所以你也必须发送它:
from subprocess import Popen, PIPE
a = Popen(["my_prog.elf"], stdin=PIPE)
a.stdin.write("MyInput\n")
如果您的输出流(flush
)被缓冲(默认情况下哪些管道不是),则仅需要 stdin
。即使这样,您也需要\n
来终止该行。