2015-03-13 62 views
0

在Linux中运行的C++代码中,我需要调用外部java可执行文件“EXEC.JAR”,让他保存结果文件“JAVA_RES.txt”,然后用C++导入这个文件来解析一些值。 我发现到现在做到这一点的唯一方法是调用系统功能C++保存并导入外部可执行结果,而不写入磁盘

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

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

回答

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); 
    }