从C/C++可执行文件运行Linux可执行文件而不使用系统()或系统()包装



我正在寻找一种方法,从一个从C或C++编译的独立Linux可执行文件中执行Linux可执行程序。然而,我看过许多Stack Overflow的帖子,这些帖子都指导用户要求使用system()函数或系统函数的包装器,我不想要依赖shell的程序,因为如果将它转移到具有不同shell的不同操作系统,它很容易崩溃。

在"How do I execute a external program In C In Linux with arguments"一文中,第二个答案指出execve()system()函数的包装器,这让我对exec()家族中的其他函数感到警惕。

我还看过以下文章:

  • 如何编写一个C程序来执行另一个程序
  • http://www.cplusplus.com/forum/beginner/168287/
  • 从C++程序在Linux中运行另一个程序

感谢所有帮助!

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

execve()替换当前进程,因此您可能需要fork(),然后在子进程中执行execve(),从而模仿system()的行为。

相关内容

最新更新