【问题标题】:C++ save & import external executable result without writing on diskC++ 保存和导入外部可执行结果而不写入磁盘
【发布时间】:2015-05-16 03:11:01
【问题描述】:

在Linux中运行的C++代码中,我需要调用一个外部java可执行文件“EXEC.JAR”,让他保存一个结果文件“JAVA_RES.txt”,然后在C++中导入这个文件来解析一些值。 到目前为止我发现的唯一方法是调用系统函数

system("java -jar EXEC.JAR --input " + someInputs + " > JAVA_RES.txt");

这个实现的最大问题是在硬盘上写这个文件(或者在我的情况下在网络共享文件系统中......)使得实现非常慢(我必须调用这个函数很多次)。 有没有更好的方法来做到这一点?有没有办法将 EXEC.JAR 的结果保存在 RAM 内存中,然后用 C++ 导入?

【问题讨论】:

    标签: java c++ linux file import


    【解决方案1】:

    是的,您可以尝试这样使用 use popen():

    int main(void) {
            FILE *in;
            extern FILE *popen();
            char buff[512];
            char s[1024]; //someInput
            if(!(in = popen("java -jar EXEC.JAR --input " + s, "r"))){
                exit(1);
            }
    
            while(fgets(buff, sizeof(buff), in)!=NULL){
                printf("%s", buff);
            }
            pclose(in);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 2019-11-19
      • 2022-11-08
      • 1970-01-01
      相关资源
      最近更新 更多