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


相关推荐
mengge.cloud7 分钟前
云计算&服务器基础小白教程
android·linux·运维·服务器·网络·云计算
一路向北finish9 分钟前
《Hadoop 高可用集群与 OpenStack Mitaka 控制节点部署全流程实操排坑指南》
大数据·linux·运维·服务器·hadoop·openstack
南棱笑笑生15 分钟前
20260826解决在Ubuntu22.04系统下编译RK3572的Buildroot【linux-6.12.69】出现CMake异常的问题
linux·运维·服务器
hh95019 分钟前
Agent Plan x DeepSeek Harness:分布式Agent集群调度与负载均衡
运维·分布式·负载均衡·adg·agent plan·adg成都社区
FIT2CLOUD飞致云20 分钟前
3分钟通过1Panel搭建安全隔离的DeepSeek Harness
运维·开源·1panel·运维面板
荣合技术服务21 分钟前
安装Windows Server 2008系统时 USB 鼠标键盘无法操作的解决方案
服务器·计算机外设·windows2008
lskblog33 分钟前
Ubuntu 18.04 安装 LibreOffice(用于 Word 在线预览转换)
java·linux·python·ubuntu·word·php·laravel
王志来1379447300838 分钟前
多元场景催生工控服务器机箱差异化需求匀天以柔性适配回应行业挑战
运维·服务器·人工智能·python
敲上瘾1 小时前
Redis持久化存储机制:从RDB到AOF再到混合持久化的配置与实践
linux·数据库·redis·缓存