vfork()函数详解

简介: vfork()函数详解

vfork

vfork的特点 — 创建子进程:

①子进程必定先运行,等到子进程调用exit或者exec后,父进程才能运行

②父子进程共享空间(共享内存数据)

fork 是 创建一个子进程,并把父进程的内存数据copy到子进程中。父子进程谁先运行是随机的。


代码:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>

int main()
{
    int data=1;

    int pid = vfork();

    if(pid == -1)
    {
        perror("vfork");
    }
    else if(pid == 0)
    {
        data++;
        printf("子进程,data:%d\n",data);
        exit(0);
    }
    else
    {   
        printf("父进程,data:%d\n",data);
    }

    return 0;
}


代码实现效果:

目录
打赏
0
1
1
0
26
分享
相关文章
C语言 父进程fork()出的多个子进程在结束后,父进程如何回收?
我在网上找了半天都是在说wait()和waitpid()的详解或者是单个子进程的回收。答非所问。 很简单,根据wait()或者waitpid()的函数特性。没有子进程时返回-1。
113 0
【创建进程】fork函数与写时拷贝
【创建进程】fork函数与写时拷贝
|
11月前
|
Linux系统编程(vfork和fork)
Linux系统编程(vfork和fork)
148 0
Waitpid 函数|学习笔记
快速学习 Waitpid 函数,“Waitpid 函数”,也是“等”。虽然功能和 “Wait” 相同,但是 “Waitpid” 实现的功能比 “Wait” 实现的功能更多。
vfork() 函数
vfork() 函数
99 0
进程创建函数fork()、vfork() ,以及excel()函数
一、进程的创建步骤以及创建函数的介绍 1、使用fork()或者vfork()函数创建新的进程 2、条用exec函数族修改创建的进程。使用fork()创建出来的进程是当前进程的完全复制,然而我们创建进程是为了让新的进程去执行新的程序,因此,就需要用到exec函数族对创建出来的新进程进行修改,让他拥有和父进程不一样的东西,修改后就可以执行新的程序,当然,修改后的子进程包含了要执行程序的信息。
1718 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等