文章目录
- 前言
- 一、fork的返回值
- 二、常见问题
- 1.为什么fork要给子进程返回0,给父进程返回子进程pid?
- 2.一个函数返回两次值怎么理解?
-
3.一个变量怎么会有不同的内容?
-
4.fork函数干了什么?
前言
fork初识:
1.fork有两个返回值。
2.父子进程代码共享,数据各开辟空间,私有一份(写实拷贝)。
我们在运行test的时候,发现多了一个进程,这个进程就是由fork分支出来的子进程,进程之间是相互独立的。
一、fork的返回值
fork()
函数会创建一个新的进程,该函数的返回值是一个整数。在父进程中,fork()
的返回值是子进程的PID(进程ID),而在子进程中,fork()
的返回值是0。因此,
fork()
函数的返回值可以用于判断当前代码运行在父进程还是子进程中。如果fork()
返回一个非零值,那么代码运行在子进程中;如果fork()
返回0,那么代码运行在父进程中。
二、常见问题
1.为什么fork要给子进程返回0,给父进程返回子进程pid?
返回不同的返回值,是为了区分让不同的执行流执行不同的代码块。父进程接收子进程pid是因为父进程可能有多个子进程,为了区分所以用他们特有的pid来作为返回值,而子进程直接用getppid()这个函数就能获得父进程的pid所以子进程返回的是0.
2.一个函数返回两次值怎么理解?
3.一个变量怎么会有不同的内容?
4.fork函数干了什么?
创建了子进程,对子进程创建了PCB,用父进程对应的字段来初始化子进程,并且实现了代码的共享。