多进程之进程退出函数:exit,

您所在的位置:网站首页 c语言里的exit 多进程之进程退出函数:exit,

多进程之进程退出函数:exit,

2024-07-15 13:35:21| 来源: 网络整理| 查看: 265

关于进程推出的三个函数:exit,_exit,atexit,下面是关于这三个函数的作用与详解 1. exit函数:

函数原型:

#include void exit(int status);

1.函数作用:在调用后会让进程正常退出;并且在进程退出时会刷新缓冲区数据

2.函数形参:

status:进程退出时的状态值,即在使用时给它一个无符号的整型数,该数将会作为进程的退出状态;并且要在0-255范围内,否则将自动默认为未定义退出状态值 3.函数返回值:无

2. _exit函数:

函数原型:

//两个函数是一个的,不过不在头一个头文件 #include void _exit(int status); #include void _Exit(int status);

1.函数作用:使用此函数将立即终止一个进程,并把它的状态值返回,注意:由于进程是非正常结束;所有当进程死亡时会通知父进程发出一个信号;这个SIGCHLD信号将告知系统回收该进程的资源;并且退出时不刷新缓冲区,若有打开的文件也不会进行关闭操作;所以可能会造成数据丢失,尽量少用吧

2.函数形参:

status:进程退出时的状态值,即在使用时给它一个无符号的整型数,并且要在0-255范围内,否则将自动默认为未定义退出状态值(与exit函数参数一致) 3.函数返回值:无

验证代码:

/* *关于exit()与_exit()两个函数测试 */ #include #include #include #include int main() { //创建一个子进程 pid_t id = fork(); //创建失败,直接退出整个进程 if(id printf("good good study"); //退出子进程并且刷新缓冲区的数据 _exit(0); } //不加换行符,一般需要进程运行结束才会刷新缓冲区 printf("hello world"); //退出程序并且刷新缓冲区 exit(0); }

exit运行结果

运行结果:

(1)子进程的因为是立即终止进程非正常退出,因此没有刷新缓冲区的数据,所以没有往屏幕打印“good good study”, (2)父进程使用的是exit是正常退出该进程,所以可以在进程被exit结束进程后打印“hello world”

3. atexit函数:

函数原型:

#include int atexit(void (*function)(void));

1.函数作用:注册一个进程退出处理函数,在进程正常退出(at normal exit)后再执行一个自己写的程序(与_exit一起使用无效),并且子进程会继承父进程注册的进程退出处理函数

2.函数形参:

(1)void (*function)(void):本质是一个函数指针,用于接受一个函数名,在执行结束后执行该函数的代码 3.函数返回值:成功返回0,否则返回得0值

验证代码:

/* *关于atexit函数测试 */ #include #include #include #include void func(void) { printf("i am a function\n"); } int main() { int ret = atexit(func); //创建一个子进程 pid_t id = fork(); if(id printf("hello world"); //退出子程序,但是不刷新缓冲区 _Exit(0); } printf("hello world"); //退出程序并且刷新缓冲区 exit(0); }

在这里插入图片描述

运行结果: (1):子进程因为使用了_exit函数,该函数是立即终止进程,并且不刷新缓冲区,因此子进程中没有任何输出 (2):父进程使用了exit函数,是正常退出,因此输出了图中的结果 总结: 1.使用exit函数是会结束进程后自动刷新缓冲区,且是正常退出 2.使用_exit函数是不会在进程结束后刷新缓冲区,且是立即终止进程(非正常退出) 3.atexit函数只由进程在正常退出情况下才能使用,因此atexit能与exit一起使用,但不能与_exit一起使用

================================================

这些都是关于我个人的一些理解如果有什么地方写错或者画错了麻烦告知一下,真的非常感谢


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭