本文由 发布,转载请注明出处,如有问题请联系我们! 发布时间: 2021-08-01c语言exit函数用法-c语言退出程序命令exit
加载中假如应用C/C 语言表达在UNIX或Linux系统软件下程序编写,会碰到许多过程撤出相关函数的状况。有些是C标准库给予的涵数,有些是系统进程,有些是系统进程或是某一系统软件特有的涵数,名称十分类似,给人一种应接不暇的觉得。
文中尝试汇总普遍的系统进程解析函数,并根据一个事例展现基本上使用方法。
过程撤出一系列系统进程/涵数。
_exit_exit(2)是一个POSIX系统进程,适用UNIX和Linux系统软件。启用这一系统进程会造成当今过程立即撤出,涵数不容易回到。核心会关掉这一过程开启的文件描述符,假如有子过程,便会被1号过程选用,随后向该过程的父过程推送SIGCHLD数据信号。
作用原形如下所示:
#include noreturn void _exit(int status);主要参数目录
–“情况”:过程撤出编码。
传参
无传参
exit_groupExit_group(2)是Linux系统软件独特的系统进程,会造成过程的全部进程撤出。因为glibc 2.3,_exit事实上是exit_group系统进程的包裝器。因而,他们在Linux系统软件上是等额的的。
作用原形如下所示:
#include void exit_group(int status);主要参数目录
–“情况”:过程撤出编码。
传参
无传参
_Exit_Exit(3)是一个c标准库涵数,作用上等同于C99引进的_Exit系统进程。由于是标准库给予的作用,在混合开发可移植性上比_exit更强,因此提议先用。
作用原形如下所示:
#include void _Exit(int status);主要参数目录
–“情况”:过程撤出编码。
传参
无传参
exitExit(3)是一个C规范函数库,也是最常见的过程撤出涵数。它与_exit和_Exit的相同之处取决于,除开使过程撤出的关键作用(还可以在启用_exit系统进程来完成)以外,它还实行一些预实际操作:
逐一实行新用户注册的自定清除涵数(根据 atexit 或是 on_exit 涵数申请注册)更新规范I/O流缓冲区域并关掉删掉由规范函数库 tmpfile 建立的临时文件夹作用原形如下所示:
#include noreturn void exit(int status);主要参数目录
–“情况”:过程撤出编码。
传参
无传参
atexitAtexit(3)是一个c标准库涵数,用以申请注册过程撤出清除涵数。该作用在运用时有下列常见问题:
清除涵数的实行程序与申请注册次序反过来。当过程接到致命性数据信号时,申请注册的清除涵数不容易强制执行。当过程启用 _exit(或是 _Exit)时,申请注册的清除涵数不容易强制执行。当实行到某一清除涵数时,若接到致命性数据信号或是清除涵数内启用了 _exit(或是 _Exit),那麼该清除涵数不容易回到而且事后的其他清除涵数也会被丢掉。当同一个清除涵数被申请注册数次,那麼一切正常状况时该清除涵数也会强制执行相对应的频次。父过程在启用 fork 前申请注册了清除涵数,那麼这种清除涵数也会褥子过程所承继;若子过程事后又启用了 exec 系列产品涵数,那麼子过程所赠予的清除涵数则会被清除。单独过程可以申请注册的清除涵数的总数不容易低于32个。作用原形如下所示:
#include int atexit(void (*function)(void));主要参数目录
–` function `:客户界定的过程撤出清除作用。
传参
取得成功回到0,0之间的值表明不成功。
on_exit该涵数类似atexit涵数,也有on_exit(3)涵数。它是Linux系统软件下独有的作用,用以申请注册过程撤出清除作用。与atexit涵数不一样,它适用额外主要参数。
作用原形如下所示:
#include int on_exit(void (*function)(int, void *), void *arg);主要参数目录
–` function `:客户界定的过程撤出清除作用。
–` arg `:种类为` void * '的自定主要参数。
传参
取得成功回到0,0之间的值表明不成功。