3 回答
TA贡献1848条经验 获得超2个赞
fork
exec
fork
fork
fork
exec
fork
exec
find
find
fork
exec
fork
fork
, exec
wait
fork
fork
fork
exec
exec
是fork
exec
execl
, execle
, execve
exec
fork/exec
bash
ls
+--------+
| pid=7 |
| ppid=4 |
| bash |
+--------+
|
| calls fork
V
+--------+ +--------+
| pid=7 | forks | pid=22 |
| ppid=4 | ----------> | ppid=7 |
| bash | | bash |
+--------+ +--------+
| |
| waits for pid 22 | calls exec to run ls
| V
| +--------+
| | pid=22 |
| | ppid=7 |
| | ls |
V +--------+
+--------+ |
| pid=7 | | exits
| ppid=4 | <---------------+
| bash |
+--------+
|
| continues
V
TA贡献1886条经验 获得超2个赞
fork()
/exec()
,尤其是对于那些习惯Windows的人来说CreateProcess()
模型:
A 程序是保存在磁盘上常规文件中的指令和数据的集合。(来自1.1.2程序、进程和线程)
.
为了运行程序,首先要求内核创建一个新的加工过程,这是一个程序执行的环境。(也来自1.1.2程序、进程和线程)
.
如果不完全理解进程和程序之间的区别,就不可能理解EXEC或FRACK系统调用。如果这些术语对您来说是新的,您可能想要返回并检查第1.1.2节。如果您现在准备继续,我们将在一句话中总结其区别:流程是一个由指令、用户数据和系统数据段以及在运行时获得的许多其他资源组成的执行环境,而程序是包含用于初始化进程的指令和用户数据段的指令和数据的文件。(来自5.3
exec
系统呼叫)
一旦您理解了程序和进程之间的区别,fork()
和exec()
职能可概括为:
创建当前进程的副本。fork()
将当前进程中的程序替换为另一个程序。exec()
- 3 回答
- 0 关注
- 344 浏览
添加回答
举报