我确实明白,虽然 exec() 在 Unix 中执行后不会返回,但 system() 根据情况可能会或可能不会返回。但是任何人都可以解释为什么 exec() 系统调用不返回以及 exec( ) 和 Unix 操作系统中的 system()
答案1
system() 相当于 fork() + exec() + wait();这意味着当一个进程运行 system() 函数时,它会创建一个新进程并等待该进程的结束。新进程在它自己的环境中执行命令,当它完成时,调用者会收到信号子进程。
了解更多信息man exec
man system
“exec 用新的进程映像替换当前进程映像”,这意味着当它退出时,调用者也会退出,因为调用者已成为新进程。
答案2
这是 Unix 操作系统中的系统调用,它用二进制程序中的信息替换当前正在运行的进程。