如何在 C++ 中执行程序 Linux

How to execute a program in C++ Linux

我有一个 cpp 项目,它执行另一个程序。
这是我的测试:

int main() {
    execl("java -jar /pathOfJAR/myjar.jar", NULL);

    return 0;
}

我运行这个项目,我一无所获。

然后我这样尝试:

execl("java", "-jar", "/pathOfJAR/myjar.jar");

我收到一个错误:

Error: Could not find or load main class .pathOfJAR.myjar.jar

但是,我可以运行终端中的命令:

java -jar /pathOfJAR/myjar.jar

我可以得到正确的结果。

如何使用函数execl或者我用错了函数?

尝试:

execl("/bin/java", "java", "-jar", "/pathOfJAR/myjar.jar", NULL);

请注意,“/bin/java”应替换为您的 java 解释器的完整路径,最容易用 which java 确定。

错误消息来自 java,而不是来自 execl。 确保 jar 文件的清单具有 Main-Class 属性。

在从您的 C++ 程序调用之前,运行 命令行中的 jar 并测试它是否有效。

你为什么要构建一个 C++ 包装器?您可能希望将 shell 包装器视为(如果您完全需要包装器的话)。