Linux进程控制———fork
·

a.out 运行后是一个进程,执行到 fork() 时,操作系统创建一个子进程。此后,父进程和子进程都会从 fork() 后面继续执行。
父进程的fork会返回子进程的pid,而子进程的fork会返回0。
fork()
│
┌─────┴─────┐
↓ ↓
父进程 子进程
a.out a.out

创建一个fork.c程序。首先printf模拟代码运行根据父进程的fork会返回子进程的pid,而子进程的fork会返回0。
可以写出判断语句,且出错输出-1.
输出结果展示

子进程创建成功,由于我们上面提到过a.out 运行后是一个进程,执行到 fork() 时,操作系统创建一个子进程。此后,父进程和子进程都会从 fork() 后面继续执行。所以生成了两个end
getpid与getppid

getpid用于获取子进程的
pidgetppid用于获取父进程的pid

在这里有一个普遍问题:为什么父进程也有父进程
针对父进程的父进程,我们可以通过grep调查

可以看到,调用fork时,bash(PID 2851)启动了 fork 程序(PID 13702)
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)