【Linux】fork函数的基础知识

文章目录

  • 前言
  • 一、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,用父进程对应的字段来初始化子进程,并且实现了代码的共享。


相关推荐
雯宝39 分钟前
Linux 内核函数集
linux
码少女43 分钟前
Linux--多路转接之select
java·服务器·数据库
GeW1 小时前
从挂科到高分通过:RHCE快速拿证的10个提分技巧
linux
蓝胖的四次元口袋1 小时前
Docker Compose多容器编排与Nginx集群实战
运维·nginx·docker compose
懂软件的胡子个哥2 小时前
微信 API 消息回调怎么设计,才能避免丢消息和重复处理
运维·微信·架构·wechatapi·个人微信号二次开发
吉甫作诵2 小时前
Redis 常用命令大全:11 大类命令速查手册
运维·数据库·redis·缓存·nosql
鸠摩智首席音效师2 小时前
Linux /etc/nsswitch.conf 文件有什么作用 ?
linux
东城居士2 小时前
理解pinctrl和gpio子系统驱动
linux·嵌入式系统
H_oRIZoN_2 小时前
Linux入门DAY43 ARM 架构基础、寄存器、大小端、异常向量、交叉编译
linux·arm·linux应用编程
ι:3 小时前
NUC12 Pro 安装 Ubuntu 24.04 LTS 详细教程
linux·windows·ubuntu·nuc