我正在寻找一种方法,从一个从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()
的行为。