我正在寻找一个真实世界的场景,其中使用exec将是唯一可用的选项(如果不使用exec则问题无法解决)
我知道什么是exec以及它与fork的区别,但仍然对强制使用exec命令的现实问题感兴趣。
答案 0 :(得分:6)
shell如何启动另一个进程,没有使用exec?
fork()
(或者,现在更好clone()
,在Linux上)只是说要复制一个进程。那么你就有2份相同的过程。
execve()
(和-le,-lp,-vp,-v friends)只是说用一个新进程完全替换当前进程。 (保持fd,但不多)
为了解雇另一个程序,您必须先在fork()
之内,然后在exec()
之一的结果进程中进行(通常是子进程)。