- 我们知道命令解释程序 shell 对命令的执行其实也是调用了 exec 系列的系统调用
运行后的结果如下截图,也就是执行了两次 docommand 函数
但如果我们在 docommand 函数中的 fork 产生的父进程中使用 exit(0) 函数来结束当前的父进程,就不会再返回main 函数了。那么 docommand 函数就只会执行一次了。
- 从这个程序里需要明白的是:我们在 shell 中输入命令的时候,shell 进程还是在运行的,而会在后台执行刚刚输入的命令或程序,其实就是使用了Linux中的 fork( ) 和 exec( ) 系统调用来实现的机制,从父进程中开出另一个子进程,子进程可以执行与父进程不一样的程序。