【发布时间】:2017-03-30 01:22:01
【问题描述】:
我明白了 fork() 和 exec() 系统调用的区别
一个程序可能是多线程的——即,可能包含多个线程,例如 T1、T2 和 T3。现在,如果程序的特定线程——比如 T2——执行 fork(),将创建一个新的重复(除了具有不同的 PID、PC、堆栈)进程,有两种可能性:
已创建的进程将包含所有线程 T1、T2、T3。
已创建的进程将仅包含执行 fork() 的线程,即 T2。它是一个单线程进程
所以对于上述场景有两个版本的 fork()。
- 第 1 点表示 exec()
- 第 2 点表示 fork()
我说的对吗?
问题
如果调用顺序是这样的
fork() 后面紧跟着 exec()
exec() 后面紧跟着 fork()
谁能提供以上两种情况的实际例子?
【问题讨论】:
-
exec() -> fork()其实是不可能的,因为exec()只有在失败的时候才会返回。
标签: multithreading unix fork exec