使用C/C++语言在UNIX或者Linux系统下编程,应该都会遇到很多的进程退出相关的函数 。有些是C标准库提供的函数,有些是系统调用,有些又是某个系统所独有的系统调用或者函数,并且命名上也极为类似,给人眼花缭乱的感觉 。
【c语言退出程序命令exit c语言exit函数用法】这篇文章尝试去总结下其中常见的那几个系统调用和函数,并通过一个例子来展示下基本用法 。
进程退出系列系统调用/函数
- _exit
函数原型如下:
#include <unistd.h>noreturn void _exit(int status);
参数列表– `status`: 进程退出码
返回值
无返回值
- exit_group
函数原型如下:
#include <linux/unistd.h>void exit_group(int status);
参数列表– `status`: 进程退出码
返回值
无返回值
- _Exit
函数原型如下:
#include <stdlib.h>void _Exit(int status);
参数列表– `status`: 进程退出码
返回值
无返回值
- exit
- 逐个执行用户注册的自定义清理函数(通过 atexit 或者 on_exit 函数注册)
- 刷新标准I/O流缓冲区并关闭
- 删除由标准库函数 tmpfile 创建的临时文件
#include <stdlib.h>noreturn void exit(int status);
参数列表– `status`: 进程退出码
返回值
无返回值
- atexit
- 清理函数的执行顺序与注册顺序相反 。
- 当进程收到致命信号时,注册的清理函数不会被执行 。
- 当进程调用 _exit(或者 _Exit)时,注册的清理函数不会被执行 。
- 当执行到某个清理函数时,若收到致命信号或者清理函数内调用了 _exit(或者 _Exit),那么该清理函数不会返回并且后续的其它清理函数也会被丢弃 。
- 当同一个清理函数被注册多次,那么正常情况下该清理函数也会被执行相应的次数 。
- 父进程在调用 fork 前注册了清理函数,那么这些清理函数也会被子进程所继承;若子进程后续又调用了 exec 系列函数,那么子进程所继承的清理函数则会被移除 。
- 单个进程能够注册的清理函数的数量不会少于32个 。
#include <stdlib.h>int atexit(void (*function)(void));
参数列表– `function`: 用户自定义的进程退出清理函数 。
返回值
成功返回0,非0值则表示失败 。
- on_exit
推荐阅读
- JAVA开发语言介绍 java语言概述题库
- 微信平台投票制作 微信投票程序怎么制作?
- c语言圆的面积编程 c语言阶乘函数怎么写
- python教程 疯狂的python建议怎么样
- 投票小程序制作 微信小程序是怎么制作的?
- 说话技巧和应变能力的书 看什么书可以提高语言表达能力?
- 怎样退出相互宝,按照这流程操作可以退出
- 董事长变更为周航 曹操出行将迎来大动作?吉利控股CEO退出
- 质量效应传奇版有中文吗 质量效应传奇版语言选项一览
- 足球经理2021语言强化怎么看 足球经理2021语言强化训练详解