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


相关推荐
叮咚侠2 分钟前
Ubuntu 24.04.3 LTS 中 vdb 的 UUID 永久挂载没有显示的磁盘的操作步骤
linux·运维·ubuntu·挂载磁盘
GAOJ_K5 分钟前
滚柱导轨中的密封件如何判断是否需更换?
运维·人工智能·科技·自动化·制造
.小墨迹32 分钟前
C++学习之std::move 的用法与优缺点分析
linux·开发语言·c++·学习·算法·ubuntu
风华同学34 分钟前
【Linux驱动篇】LED驱动开发实验
linux·驱动开发·ubuntu
李斯维35 分钟前
安装 WSL 最好的方式
linux·windows
skyyx200239 分钟前
写给网工新手:子网掩码基本概念和一些计算方法
运维·网络
张小九991 小时前
fpocket安装和使用教程
linux·机器学习·github
元气满满-樱1 小时前
Rewrite重写
linux·nginx
杰克崔1 小时前
进程内mmap锁相互干扰问题
linux·运维·服务器·车载系统
木泽八1 小时前
python实现pdf拆分与合并
服务器·python·pdf