我正在寻找一种从 C 或 C++ 编译的单独 Linux 可执行文件中执行 Linux 可执行文件的方法。但是,我查看了许多 Stack Overflow 帖子,这些帖子都直接要求用户使用 system()
函数或系统函数的包装器,并且我不想要依赖于 shell 的程序,因为如果将其转移到具有不同 shell 的不同操作系统,它很容易崩溃。
在帖子中How do I execute an external program within C in Linux with arguments ,第二个答案指出 execve()
是 system()
函数的包装器,这让我对 exec() 中的其他函数保持警惕
家庭。
我还看过以下文章:
- How do you write a C program to execute another program?
- http://www.cplusplus.com/forum/beginner/168287/
- Run Another Program in Linux from a C++ Program
感谢所有帮助!
最佳答案
execve()
不是 system()
的包装器;它是 execve 系统调用本身的包装器。
execve()
替换当前进程,因此您可能需要 fork()
然后执行 execve( )
在子进程中,从而模拟 system()
的行为。
关于c++ - 从 C/C++ 可执行文件运行 Linux 可执行文件而不使用 system() 或 system() 包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71316137/