gpt4 book ai didi

c++ - 在 C++ 中使用 popen 连续写入子进程

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:47:43 25 4
gpt4 key购买 nike

我需要使用 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() 关闭管道,以便将数据写入进程。如何确保写入数据而不必每次都关闭管道?

最佳答案

您需要调用 fflush(in) 以确保缓冲数据实际写入流中。

同时检查命令中的 java -cp .:./* 是否扩展到无效的类路径。如果当前目录中有多个文件,而不是实际的类路径条目,我认为最终会扩展到多个参数。

关于c++ - 在 C++ 中使用 popen 连续写入子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30430531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com