fork函数

fork函数详解 首先了解什么是fork? 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。 上面的话通俗理解就是: fork是复制进程的函数,程序一开始就会产生一个进程,当这个进程(代码)执行到fork 阅读详情

fork函数

        在linux中fork函数是非常重要的函数,它从已存在进程中创建一个新的进程。新进程为子进程,而原进程为父进程。

#include<unistd.h>
pid_t fork(void);
//返回值:子进程返回0,父进程
//中返回子进程的,出错返回-1

fork函数的返回值

        子进程返回0;

        父进程返回的是子进程的pid。

写时拷贝

        通常,父子进程代码共享,父子再不写入时,数据也是共享的,当任意一方试图写入,便以写时拷贝的方式各自 一份副本。


fork常规用法

         一个父进程希望复制自己,使父子进程同时执行不同的代码段。例如,父进程等待客户端请求,生成子进程来处理请求。

        一个进程要执行一个不同的程序。例如子进程从fork返回后,调用exec函数。

fork调用失败的原因

        系统中有太多的进程

        实际用户的进程数超过了限制

vfork函数

        也是用来创建子进程,但是

         vfork用来创建一个子进程,而子进程和父进程共享地址空间,fork的子进程具有独立地址空间

        vfork保证子进程先运行,在它调用exec或(exit)之后父进程才开始被调度执行

fork相关程序

#include<stdio.h>
#include<unistd.h>

int main(){
    pid_t pid;
    printf("before pid id %d\n",getpid());
    if((pid = fork()) == -1){
        perror("fork");
        return -1;
    }
    printf("after pid is %d;fork return %d\n",getpid(),pid);
    sleep(1);//等待父子进程都结束后再退出
    return 0;
}
//这里可以看到三行输出,一行before,两行after。进程先打印before,
//当fork之后,父子两个执行流分别执行。
//注意:fork之后,谁先执行完全由调度器决定。

vfork相关程序

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int value = 100;

int main(){
    pid_t pid;
    if((pid = vfork())== -1){
        perror("fork");
        return 1;
    }
    if(pid == 0){
        //child
        sleep(3);
        value = 200;
        printf("child value = %d\n",value);
        exit(0);
    }else {
        //parent
        printf("parent value = %d\n",value);
    }
    return 0;
}
//等待3秒之后,子进程先输出value值,然后父进程才输出value值
//value值均为200,可见子进程直接改变了父进程的变量值,因为
//子进程在父进程的地址空间中运行

Plecs仿真进阶:半桥LLC谐振变换器从开环到闭环的实战解析 本文通过Plecs软件,详细解析了半桥LLC谐振变换器从开环模型搭建到闭环控制实现的完整仿真流程。文章深入探讨了谐振参数设置、关键波形解读,并重点分享了基于PI控制器的闭环调试实战经验与参数整定技巧,帮助工程师高效掌握这一高效拓扑的仿真与设计方法。 阅读详情

相关推荐

KEPServerEX6教程:IoT Gateway与MQTT Client实现工业数据双向通信

工业物联网的核心挑战在于异构设备协议与云端平台之间的数据互通。Modbus、S7、OPC UA等现场协议纷繁复杂,而上层应用普遍偏好MQTT、REST等轻量接口,此时需要一个可靠的协议转换层。MQTT作为低带宽、高可靠的发布/订阅消息协议,天然适合工业数据采集与远程控制场景。KEPServerEX6作为工业网关软件,内置IoT Gateway与MQTT Client组件,分别承担数据上行发布与指令下行订阅的职责,形成完整的双向闭环。通过配置Modbus TCP设备驱动、创建Tag、设置MQTT Broker

weixin_33787529的博客 386

fork()函数详解

编写一段程序(程序名为fork.c),使用系统调用创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动,父进程显示字符“a”,子进程分别显示字符“b”和“c”。源程序如下:#include&lt;stdio.h&gt;#include&lt;sys/types.h&gt;#include&lt;unistd.h&gt;int main(){ int pid1,pid2; print...

qq_38855717的博客 979

Linux与Windows双系统,安装完linux后无法通过grub进入Windows的解决方法

先装Windows 10,Windows可正常启动,再装Kali,Kali提示装grub后照装。然而装完后重启发现无Windows选项。

sakurashockwave的博客 6454

fork()函数详解

目录 1.基本了解: 2.fork函数的了解: 3.僵死进程: 1.基本了解: 一个进程,包括代码、数据和分配给进程的资源。fork 函数会新生成一个进程,调用 fork 函数的进程为父进程,新生成的进程为子进程。在父进程中返回子进程的 pid,在子进程中返回 0,失败返回-1。 为什么两个进程的fpid不同呢,这与fork函数的特性有关。fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值: 1)在父进程中,fork返回新创建子进程的进程...

weixin_57133901的博客 4万+

汇总药用数据库(Pubchem,bingdingDB,Chembl,ExcapeDB)数据

记载一下如何汇总4大数据库的数据

recher_He1107的博客 3392

操作系统知识点汇总(王道)

操作系统不论是就业还是升学都是核心的一门课程,对于大部分工科更是必修课程。本文章是对《王道操作系统》所有知识点的总结笔记,以供大家学习以及在备考期间复习使用。让我们一起把知识往脑子里旋好吗!!!......

S mile0804的博客 5万+

linux中fork() 函数详解

fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了...

weixin_33804990的博客 2877

OpenClaw 完整命令文档(2026.3.13 最新版)

本文档为OpenClaw 2026.3.13通用版使用指南,包含核心命令大全。主要内容包括:1)基础安装/升级/卸载命令;2)ClawHub扩展安装命令(支持飞书/钉钉/企微等平台连接);3)Skills技能安装命令(实现聊天/搜索/记忆等功能);4)飞书机器人授权与配对命令;5)启动运行与配置检查命令;6)工作区与记忆管理命令;7)插件安全设置命令;8)调试日志命令;9)飞书机器人一键部署简化流程。文档特别强调飞书机器人部署需feishu扩展+对应技能+用户授权的完整配置,所有命令均需在终端执行,安装后需

MKliudan的专栏 1290

Linux fork函数

在Linux操作系统中,进程是系统资源管理的核心单元。每一个程序的执行都对应着一个进程,进程管理成为操作系统的重要组成部分。进程的创建、终止和管理,是理解操作系统工作原理的关键内容。在介绍了Linux进程相关的基本概念之后,接下来我们将介绍一个非常重要的系统调用——fork函数,它是创建进程的主要工具。

wxk2227814847的博客 1657

深入解读ES8388寄存器:从录音到播放,如何用代码控制这颗音频Codec

本文深入解析ES8388音频编解码器的寄存器设置,从录音到播放的完整控制流程。详细介绍了寄存器架构、录音通道配置、播放通道优化以及直通(Bypass)模式的高级应用,帮助开发者通过代码精准控制这颗高性能音频Codec,解决实际开发中的音质问题。

weixin_30275415的博客 547

【OpenClaw从入门到精通】第20篇:OpenClaw实战—从零搭建教育自动化助教系统(作业批改+智能答疑+学情分析)【2026实测】

本文基于OpenClaw开源框架,聚焦教育行业“答疑重复、批改耗时、学情模糊”三大核心痛点,提供从环境部署到功能落地的全流程实操方案。通过整合QQ群交互、代码分析、数据可视化等技能,构建“智能答疑+作业批改+学情分析”的自动化助教系统。系统支持7×24小时群聊答疑、多语言作业自动评审、学情数据周报生成,经实测可使助教工作时间减少60%、作业批改效率提升5-10倍、学情问题识别提前5周。文中包含完整配置步骤、可直接运行的代码示例及避坑指南,兼顾新手入门与进阶实操,帮助教育工作者快速落地自动化工具,从重复劳动中

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1448

fork()函数

多进程通信 fork()函数

geiii9的博客 1万+

Python 爬虫教程:美食网站 + 社交平台餐馆评论抓取(评分提取 + 情感分析)

在当今数字化时代,数据无处不在,而爬虫技术则是获取数据的强大工具之一。无论是市场调研、学术研究还是个人兴趣探索,爬虫都能帮助我们从海量的网络信息中提取有价值的数据。本文将通过一个实战案例,带领大家学习如何使用 Python 爬虫技术抓取美食网站和社交平台上的餐馆评论,并进行评分提取与情感分析。通过这个项目,你将掌握爬虫的基本原理、数据解析、以及如何结合情感分析技术来挖掘数据背后的洞察。

u014481728的博客 310

【Linux】fork函数

介绍fork函数

Yui_的博客 1302

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

c++中的fork函数_fork( )函数详解

一、fork入门知识一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一...

weixin_39871649的博客 6306

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

fork函数详解_fork()

**注意:**在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。在子进程中,fork函数返回0,在父进程中,fork返回新创建子进程的进程ID。的,pid_t定义的类型都是进程号类型。这个语句的意思是定义了一个pid_t类型的变量pid,fork()函数返回一个进程号,这个进程号赋给了pid。|| fork(), 左边的fork()返回一个非零值,根据||的短路原则,前面的表达式为真时,后面的表达式不执行,故包含main的这个主进程创建了一个子进程,

2401_87556630的博客 2383

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Fork函数

在学习fork 函数的时候觉得特别有意思,就写下来和大家分享。 1、创建新进程:pid_t fork(void) 获得ID号: pid ——–pid_t getpid();   ppid——–pid_t getppid(); fork 函数调用一次,返回2次(返回2个值) (就像女人结一次婚就可能会得到丈夫

Lyt15829797751的博客 2229

fork函数小解

摘要:fork函数用于创建子进程,子进程继承父进程的所有变量和执行状态,唯一区别是fork返回值(父进程返回子进程PID,子进程返回0)。父子进程的执行顺序相同,但子进程不会执行父进程的其他分支。多级fork调用时,每级父进程返回子进程PID,子进程返回0。文章通过代码示例演示了多级fork调用时的父子关系和输出结果,展示了进程间的继承关系和执行流程。

jiang_sanmu的博客 1356
上一篇: 电话号码管理程序-----文件项目
下一篇: python知识点总结(1)
CYD、孤狼
博客等级 码龄9年 24粉丝 129原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值