【回眸】技术干货——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!

全部评论

相关推荐

10-10 01:10
已编辑
深圳大学 测试开发
牛客26692713...:项目经历写那么多没啥用吧,挑两个最好的,其实浓缩成一页会比较好吧,背景、实习、项目,要是还有空间就再加个专业技能
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务