C ++ save&导入外部可执行结果而无需写入磁盘

时间:2015-03-13 15:03:36

标签: java c++ linux file import

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

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

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

1 个答案:

答案 0 :(得分:1)

是的,您可以尝试以这种方式使用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);
    }