1、为什么要创建子进程?
(1)每一次程序的运行都需要一个进程;
(2)多进程实现宏观上的并行。
2、fork的内部原理
(1)进程的分裂生长模式
- 如果操作系统需要一个新进程来运行一个程序,那么操作系统会用一个现有的进程来复制生成一个新进程。注意是复制后再修改,而不是重新创建(代价大)。
- 老进程叫父进程,复制生成的新进程叫子进程。
(2)fork的演示
- fork函数调用一次,会返回2次,因为父子都有相同的一份代码,进程同时被运行。
- 使用fork函数,返回值等于0,则表明是子进程;返回值大于0,则表明是父进程。
- 典型的使用fork的方法:区分当前是在子进程还是在父进程,即使用fork后用if判断返回值,如果返回值大于0时就是在父进程中,等于0时就是在子进程中,然后在各自的{ }里再做操作。
- fork的返回值在子进程中等于0,在父进程中等于(本次fork创建的)子进程的进程ID。
3、关于子进程
(1)子进程和父进程的关系,子进程一旦建立,子进程不再依赖于父进程。
(2)子进程有自己独立的PCB;
(3)子进程被内核同等调度。
上一篇:操作系统
下一篇:socket套接字及缓冲区