exec() 和 system() 系统调用

Sou*_*oti 5 linux system-calls linux-kernel

我明白虽然 exec() 在 Unix 中执行后不返回,system() 可能会或可能不会返回,具体取决于情况。但是谁能解释为什么 exec() 系统调用不返回以及 exec() 之间的差异) 和 system() 在 Unix 操作系统中

Nah*_*eul 8

system() 等价于 fork() + exec() + wait();这意味着当一个进程运行 system() 函数时,它会创建一个新进程并等待该进程结束。新进程在它自己的环境中执行命令,当它完成时,调用者接收信号子进程。

了解更多信息 man exec man system

“exec 用新的进程映像替换当前进程映像”,这意味着当它退出时,调用者也会退出,因为调用者已成为新进程。

  • 还有更多的东西。`system()` 实际上是 `exec()` 是您的默认 shell,并将字符串传递给它进行处理,因此您可以例如使用管道和其他 shell 功能。 (2认同)