如何在不使用system,popen,fork,exec的情况下在C/Linux中执行外部命令?

SSC*_*SSC 4 c linux fork

我想知道是否有任何好的方法在Linux环境中使用C语言执行外部命令而不使用system(),popen(),fork(),exec()?

我无法使用这些功能的原因是我的主应用程序耗尽了我的嵌入式主板中的大部分系统资源(即内存).如果我做一个分支,董事会将无法创建我的主应用程序的副本.从我在书中读到,system()和popen()实际上都在下面使用fork(),所以我也不能使用它们.

我目前唯一的想法是在运行我的主应用程序之前创建一个进程并使用IPC(管道或套接字)让新进程知道它需要使用system()或popen()运行哪些外部命令并返回结果完成后我的申请.

JIg*_*use 8

你不能做这个.Linux通过顺序调用fork()和创建新进程exec().没有其他的创建过程的方法.

fork()本身效率很高.它使用Copy-on-Write进行子进程,因此fork()在真正需要之前不要复制内存.所以,如果你exec()fork()系统之后立即拨打电话就不会吃太多内存.

UPD.我骗你说过程创建.事实上,有内部使用的clone()电话fork().此调用提供了对进程创建的更多控制,但使用起来可能很复杂.阅读man 2 forkman 2 clone了解更多信息.