运行 一个 Linux 可执行文件,来自 C/C++ 可执行文件,无需使用 system() 或 system() 包装器

Running a Linux Executable from C/C++ Executable Without Use of system() or system() Wrappers

我正在寻找一种从单独的 Linux 可执行文件执行 Linux 可执行文件的方法,该可执行文件是从 C 或 C++ 编译的。但是,我查看了许多 Stack Overflow post,它们都直接要求用户使用 system() 函数或系统函数的包装器,我不想要依赖 shell,因为如果转移到具有不同 shell.

的不同操作系统,它很容易崩溃

在 post How do I execute an external program within C in Linux with arguments 中,第二个答案指出 execve()system() 函数的包装器,这让我对中的其他函数保持警惕exec() 家庭。

我还看过以下文章:

感谢所有帮助!

execve() 不是 system() 的包装;它是 execve 系统调用本身的包装器。

execve() 替换当前进程,所以你可能需要fork()然后在子进程中执行execve(),从而模仿 system().

的行为