我需要使用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);
}
Run Code Online (Sandbox Code Playgroud)
但是数据没有发送!我需要用pclose()关闭管道,以便将数据写入进程.如何在不必每次都关闭管道的情况下确保写入数据?
小智 2
您需要调用fflush(in)以确保缓冲的数据实际上已写入流中。
另请检查java -cp .:./*命令中是否未扩展为无效的类路径。我认为,如果当前目录中有多个文件,而不是实际的类路径条目,那么最终会扩展到多个参数。
| 归档时间: |
|
| 查看次数: |
935 次 |
| 最近记录: |