用subprocess写入stdin

我有以下的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; } 

我试图用下面的方法写一些input:

 from subprocess import * a = Popen(["my_prog.elf", stdin=PIPE) a.stdin.write("MyInput") 

但这似乎并没有工作….任何想法如何解决这个问题?

**编辑**

有没有人有任何线索为什么a.stdin.flush()不会工作?

scanf读一整行,直到它读取新行字符\n ,所以你也必须发送这个:

 from subprocess import Popen, PIPE a = Popen(["my_prog.elf"], stdin=PIPE) a.stdin.write("MyInput\n") 

如果输出流( stdin )被缓冲(哪些管道不是默认的),则只需要flush 。 即使这样,你也需要\n来终止这条线。