Linux进程控制(一)fork和exit

本文详细介绍了进程控制的概念,包括创建新进程(fork系列函数)、进程终止(exit系列函数)及进程终止处理程序的登记(atexit)。重点讲解了fork与vfork的区别以及exit与_Exit的不同之处。

1.概述

          进程控制包括创建新进程,进程终止,等待,执行程序几个操作。

2.新建进程:fork系列函数

2.1 fork

      #include <unistd.h>

      pid_t fork(void); 

      调用一次fork,会返回2次,子进程返回0,父进程返回子进程的pid;出错返回-1。

      子进程获得父进程数据空间,堆和栈的副本。

      父进程中所有打开的文件描述符都被复制到子进程中,对每个打开的文件描述符,父进程和子进程共享一个文件表项。

2.2 vfork

      vfork与fork的两点区别:

      1)不将父进程的地址空间完全复制到子进程中,适用情况:创建一个新进程,新进程的目的是exec一个新程序;

      2)vfork保证子进程先运行,fork不确定。

3.进程终止:exit系列函数

3.1 exit

      #include <stdlib.h>

      void exit(int status);

      exit函数调用各终止处理程序(用atexit登记),并关闭所有标准I/O流,然后返回内核

3.2 _exit和_Exit

      #include <stdlib.h>

     void _Exit(int status);

     #include <unistd.h>

    void _exit(int status);

    _exit和_Exit与exit的区别:不调用终止处理程序,也不冲洗标准I/O流,直接返回内核

3.3 atexit

      #include <stdlib.h>

      int atexit(void (*func)(void));

      用来登记终止处理程序,登记后的函数将由exit自动调用,可以登记多个终止处理程序,执行顺序与注册时相反。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值