我想用Python脚本控制一个C程序。 C程序看起来像这样:
#include <stdio.h>
#include <stdlib.h>
void main(){
int num;
do{
printf("insert a number: \ninsert 3 to exit\n");
scanf("%d", &num);
switch(num){
case 1: {printf("you pressed 1\n");break;}
case 2: {printf("you pressed 1\n");break;}
default:{printf("you pressed another key\n");}
}
}while(num!=3);
}
我的python脚本正在使用子进程:
import subprocess
p=subprocess.Popen('./Cprogram', stdin=subprocess.PIPE, stdout=subprocess.PIPE)
p.stdin.write('1')
p.communicate()
结果是python shell被光线挡在空行上。
在c程序中没有while,脚本运行正常。我怎么能管理它?
谢谢
答案 0 :(得分:-1)
p.communicate()
将一直运行,直到C程序完成执行。由于你还没有传入3,你的程序还没有完成执行。也许你正在寻找类似的东西(按照塞巴斯蒂安的评论编辑):
import subprocess
p=subprocess.Popen('./Cprogram', stdin=subprocess.PIPE, stdout=subprocess.PIPE)
p.stdin.write('1\n')
p.stdin.write('3\n')
out, err = p.communicate()
print(out)