java - C++保存和导入外部可执行结果而不写入磁盘

标签 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++中导入?

最佳答案

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

关于java - C++保存和导入外部可执行结果而不写入磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29035579/

相关文章:

java - 清除给定的命令行字符串以匹配文件路径

通过gtk_menu_popup显示的gtk菜单可以释放焦点吗?

java - 为什么我拥有的一对多关系没有持久保存到 GAE 数据存储中?

java - BinarySearch 在列表中找不到元素,即使它存在 : Java

java - 为什么preserveOriginal 不能像java doc 中描述的那样工作?

linux - 在 Linux 中的特定行向文件添加文本

Linux 命令行 - 列出所有包含 .js 文件的目录,并将目录及其内容复制到一个新文件夹中

c++ - 如何在不邀请 future 对象切片的情况下实现 ICloneable

c++ - 如何调试 WebKit2GTK+ 扩展

C++:const volatile 方法