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


相关推荐
杰锅就是爱情1 小时前
OpenObserve Ubuntu部署
linux·运维·ubuntu
lllsure2 小时前
【Docker】容器
运维·docker·容器
Jtti4 小时前
新加坡服务器连接速度变慢应该做哪些检查
运维·服务器
郝亚军4 小时前
websocket 服务器往客户端发送的数据要加掩码覆盖吗?
服务器·网络·websocket
DoWhatUWant4 小时前
域格YM310 X09移芯CAT1模组HTTPS连接服务器
服务器·网络协议·https
huangjiazhi_4 小时前
在Linux上无法访问usb视频设备
linux·运维·服务器
xixingzhe24 小时前
jenkins脚本触发部署
运维·jenkins
TTGGGFF5 小时前
云端服务器使用指南:如何跨机传输较大文件(通过windows自带工具远程桌面连接 非常方便)
运维·服务器
躲在云朵里`5 小时前
ElasticSearch复习指南:从零搭建一个商品搜索案例
运维·jenkins
yyy0002005 小时前
压缩和归档 文件传输
linux·运维·服务器