vfork创建进程以及exit退出

vfork与fork的区别

区别一:vfork可以直接使用父进程存储空间,不拷贝 ,fork函数会拷贝一份父进程的数据给子进程,彼此互相独立。
区别二:vfork可以保证子进程先运行,当子进程调用exit退出后,父进程才执行。fork函数:子进程和父进程互相争抢系统资源。

exit函数

头文件:stdlib.h

功能:为退出程序的函数

用法:

   exit(1);  为异常退出     //只要括号内数字不为0都表示异常退出,里面的参数值会返回给操作系统。

   exit(0);  为正常退出

注意:括号内的参数都将返回给操作系统;

      return() 是返回到上一级主调函数,不一定会退出程序;

实例

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

int main()
{

        pid_t pid;
        int num;
        pid=vfork();

        if(pid > 0)
        {
                while(1)
                {       num++;
                        printf("parent process,pid is %d\n",getpid());
                        sleep(1);
                        printf("num is %d \n",num);
                }

        }
        else if(pid == 0)
        {
                while(1)
                {       num++;


                        printf("child process ,pid is %d\n",getpid());
                        sleep(1);
                if(num==3)
                {
                        exit(0); //_Exit(0)或者_exit(0)
                }
                printf("num is %d \n",num);
                }
        }


        return 0;

}

请添加图片描述
如上图所示,子进程直接使用父进程的存储空间,所以子进程结束后,num输出为4,要用exit()函数来正常退出进程,才能正常显示num的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值