C ++保存和导入外部可执行结果而不写入磁盘
C++ save & import external executable result without writing on disk
在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);
}
在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);
}