【回眸】技术干货——Linux内核(八)Vfork API用法
Linux内核(八)vfork API用法
前言
vfork()与fork()API类似,均是创建进程的API,但是有几处不同之处。第一处不同在于,vfork()函数相对于fork()函数而言,vfork()函数直接使用父进程存储空间,不直接拷贝。第二处不同之处在于,vfork()函数保证子程序优先运行,子程序退出后,父程序才会继续。
编程比较
fork() API
#include<stdio.h> #include<sys/types.h> #include<unistd.h> //头文件 //pid_t pid; //pid赋值 getpid(); //打印进程号 //死循环不退出 int main(){ pid_t pid; pid = getpid(); fork(); if (getpid() == pid){ while(1){ printf("this is father process,pid is%d\n",pid); } } else{ while(1){ printf("this is son process,pid is%d\n",pid); } } while(1); return 0; }
运行结果
可以发现父子进程交替出现,完成刷屏
vfork() API
#include<stdio.h> #include<sys/types.h> #include<unistd.h> int main(){ pid_t pid; pid = getpid(); vfork(); if (getpid() == pid){ while(1){ printf("this is father process,pid is%d\n",pid); } } else{ while(1){ printf("this is son process,pid is%d\n",pid); } } while(1); return 0; }
运行结果
可以看到vfork()创建的进程只有子进程在刷屏,说明vfork()函数保证子程序优先运行,子程序退出后,父程序才会继续。本文内容到这里就结束了。
后记碎碎念
Linux是一个系列,可以点击专栏查看同系列的其他文章,希望能帮到屏幕前的每一位应届生往届生,该博文最初发表在CSDN上。
#offer比较##校招求职有谈薪空间吗##找工作前vs找工作后的心路变化##26届秋招投递记录##央国企投递记录#应届生必学实用物联网技术 文章被收录于专栏
本专栏助应届生从物联网小白成长为企业争抢的技术人才,聚焦三大核心技术:传感器应用(环境监测)、嵌入式开发(STM32/Arduino)、通信协议(LoRa/NB-IoT/MQTT),配合10+实战项目(如智能温湿度监控系统)积累项目经验。覆盖智能硬件、工业物联网、智能家居领域岗位需求,解析企业招聘技术重点与面试题,帮电子、计算机、自动化等专业学生构建知识体系,提前锁定名企Offer!