c++ - 从 C/C++ 可执行文件运行 Linux 可执行文件而不使用 system() 或 system() 包装器

标签 c++ c linux execution

我正在寻找一种从 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() 中的其他函数保持警惕 家庭。

我还看过以下文章:

感谢所有帮助!

最佳答案

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

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

关于c++ - 从 C/C++ 可执行文件运行 Linux 可执行文件而不使用 system() 或 system() 包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71316137/

相关文章:

c++ - 我可以做些什么来提高内存搜索速度?

c++ - vcruntime140_app.dll 未包含在 Microsoft Visual C++ 2017 Redistributable (x64) 中?

c - jack 中的 "32 bit float mono audio"

linux - 'git difftool --dir-diff commit-id' 给出错误

c++ - 非线性函数最小化 C++

c++ - MFC ODBC SQLConfigDataSource() 未处理的异常

c - printf:格式 -Wformat 中的未知转换类型字符 ')'

C 结构体和链表之争

node.js - 如何在 CentOS 上运行的 Apache HTTP 服务器上设置 Loopback nodeJS 后端

c - 串行端口卡在 read() 数据