对fork的进一步理解

最近在看Unix的源码,没想到让我对Linux的认知有了更深的理解。

上一张我在书上看到的图

1
2
3
4
5
6
7
8
9
10
11
12
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc, char const *argv[]) {
pid_t pid;
pid = fork ();
if (pid > 0) //父进程
printf("I am the parent of pid=%d\n", pid);
else if (!pid) //子进程
printf("I am the child!\n");
return 0;
}

输出结果:

1
2
3
hao@LAPTOP-SSIGRLRD:/Desktop$ ./fork
I am the parent of pid=29
I am the child!

fork会针对父进程和子进程各返回一次,给父进程返回子进程的pid,此时pid>0;给子进程分配一个

新的pid。

相关文章