【发布时间】:2015-05-25 02:40:09
【问题描述】:
我需要使用 popen 打开一个子进程,该进程将不断要求用户输入...主进程需要通过管道发送该数据。
这是我的第一次尝试:
FILE *in;
char buff[1024];
if(!(in = popen("cd FIX/fix2/src; java -cp .:./* com.fix.bot", "w"))){
return 1;
}
while(1){
char buffer[] = { 'x' };
fwrite(buffer, sizeof(char), sizeof(buffer), in);
cout << "Wrote!" << endl;
usleep(1000000);
}
但是数据没有发送!我需要用 pclose() 关闭管道,以便将数据写入进程。如何确保写入数据而不必每次都关闭管道?
【问题讨论】:
-
您的应用是否可能正在寻找以 \n 结尾的输入?因为你现在没有发送 LF...
-
别忘了检查
fwrite()的结果,我认为它并不能保证写出你所要求的一切。通常可以,但您需要验证。