exit(),_exit()的区别

Linux的源码

#define __NR_exit                 1

#define __NR__exit __NR_exit /* 摘自文件include/asm-i386/unistd.h*/
"__NR_"是在Linux的源码中为每个系统调用加上的前缀,请注意第一个exit前有2条下划线,第二个exit前只有1条下划线。

Linux核心还提供了一些C语言函数库,这些库对系统调用进行了一些包装和扩展,因为这些库函数与系统调用的关系非常紧密,所以习惯上把这些函数也称为系统­调用。#define这句只能说明内核里的两个系统调用_exit和exit相同,但其封装后对应的C库函数_exit()和exit()是不同的。

exit()函数定义在stdlib.h中,而_exit()定义在unistd.h中;

exit()函数的作用最为简单:直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构;exit()函数则在这些基础上作了一些包装­,在执行退出之前加了若干道工序,也是因为这个原因,有些人认为exit已经不能算是纯粹的系统调用。

exit()函数与_exit()函数最大的区别就在于exit()函数在调用exit系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件,即所谓的"清理I/O缓冲"

‘exit()’‘_exit()’有不少区别在使用‘fork()’,特别是‘vfork()’时变得很 突出。

‘exit()’‘_exit()’的基本区别在于前一个调用与实施库里用户状态结构 (user-mode constructs)有关的清除工作(clean-up),而且调用用户自定义的清除程序 (译者注:自定义清除程序由atexit函数定义,可定义多次,并以倒序执行),相对 应,后一个函数只为进程实施内核清除工作。
在由‘fork()’创建的子进程分支里,正常情况下使用‘exit()’是不正确的,这是 因为使用它会导致标准输入输出(译者注:stdio: Standard Input Output)的缓冲区被 清空两次,而且临时文件被出乎意料的删除(译者注:临时文件由tmpfile函数创建 在系统临时目录下,文件名由系统随机生成)。在C++程序中情况会更糟,因为静 态目标(static objects)的析构函数(destructors)可以被错误地执行。(还有一些特殊情况,比如守护程序,它们的父进程需要调用‘_exit()’而不是子进程;适用于绝大多数情况的基本规则是,‘exit()’在每一次进入‘main’函数后只调用一次。)
在由‘vfork()’创建的子进程分支里,‘exit()’的使用将更加危险,因为它将影响 父进程的状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/407277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript学习系列(15):数组中的lastIndexOf方法

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说…

iOS新版微信底部返回横条问题

之前没有怎么接触过微信开发,只是对H5比较熟。最近维护一个微信公众号的项目,遇到了iOS端返回键的坑。 描述一下: 从公众号打开页面后,底部有个返回的小横条,恰好也挡住了页面。这不行啊,得解决。 页面的高…

【ExtJS】FormPanel 布局(一)

准备工作,布置一个最简单的Form,共5个组件,都为textfield。 1 Ext.onReady(function(){2 Ext.create(Ext.form.Panel, {3 width: 500,4 title: Layout,5      renderTo : form,6 items: [{7 xt…

squid代理架构

代理服务器是使用非常普遍的一种将局域网主机联入互联网的一种方式,使用代理上网可以节约紧缺的IP地址资源,而且可以阻断外部主机对内部主机的访问,使内部网主机免受外部网主机的***。但是,如果想让互联网上的主机访问内部网的主机…

JS之四舍五入Fixed

用法:toFixed() 方法可把 Number 四舍五入为指定小数位数的数字 语法:NumberObject.toFixed(num) 参数:必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略…

输出上下对称的星型

输出星型&#xff0c;如&#xff1a; ******************************* C code: // 用法如&#xff1a;a.exe 7#include<stdio.h>int main(int argc, char *argv[]){if(argc < 2){printf("Usage: %s <n>\n", argv[0]);}else{int n atoi(argv[1]);i…

javascript学习系列(16):数组中的every方法

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说…

JS之Number的toString方法

作用&#xff1a;toString() 方法可把一个 Number 对象转换为一个字符串&#xff0c;并返回结果 语法&#xff1a;NumberObject.toString(radix) 参数&#xff1a;可选。规定表示数字的基数&#xff0c;使 2 ~ 36 之间的整数。若省略该参数&#xff0c;则使用基数 10。但是要…

signal函数说明

c traps and pitfalls 对signal函数解释得非常详细。 <signal.h> 中 void ( *signal( int sig, void (* handler)( int ))) ( int ); int (*p)(); 这是一个函数指针, p所指向的函数是一个不带任何参数, 并且返回值为int的一个函数. int (*fun())(); 这个式子与上面式子…

javascript学习系列(17):数组中的find方法

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说…

RSA客户端js加密服务器C#解密(含源码)

本来用https感觉已经差不多了&#xff0c;客户非得要用户登录的时候再加密一次&#xff0c; 因为时间关系&#xff0c;原计划用C做客户端Activex加密暂被取消&#xff0c;花了两天时间在网上到处找&#xff0c;先作出了一个js的客户端加密先用着 思路 1.服务器每次随机生成公私…

vue mint-ui 弹出框

function toast(title){ //提示vm.$toast({message: title,position: middle,duration: 3000}); }效果如下 function toastSuccess(title){ //成功提示vm.$toast({message: title,iconClass: icon icon-success // (图标需自行准备&#xff09;}); } 效果如下 function lo…

REDIS 字典数据结构

对于REDIS来讲 其实就是一个字典结构&#xff0c;key ---->value 就是一个典型的字典结构 【当然 对于vaule来讲的话&#xff0c;有不同的内存组织结构 这是后话】 试想一个这样的存储场景&#xff1a; key:"city" value:"beijing" 如果有若干个这样…

JS之返回指定位置字符的charAt方法

作用&#xff1a;charAt() 方法可返回指定位置的字符&#xff0c;返回的字符是长度为 1 的字符串 语法&#xff1a;stringObject.charAt(index) 参数&#xff1a;必需。表示字符串中某个位置的数字&#xff0c;即字符在字符串中的下标 注意&#xff1a;字符串中第一个字符的…

OOB套接字传输实例(达不到预期结果)

参考资料&#xff1a;<<Linux网络编程.pdf>>page119-205 代码本来是全照书上抄的&#xff0c;后来发现编译不成功&#xff0c;所以就稍微改了下。下面是我修改后的代码&#xff1a; server.c // OOB套接字传输服务端(Server.c)#include <stdio.h>#include…

sql,dateadd,datediff

本文转载自MSDN&#xff0c;为了方便访问&#xff0c;谢谢&#xff01;DATEADD (Transact-SQL)http://msdn.microsoft.com/zh-cn/library/ms186819.aspx将指定 number 时间间隔&#xff08;有符号整数&#xff09;与指定 date 的指定 datepart 相加后&#xff0c;返回该 date。…

公众号H5 VUE获取CODE

回调地址设置页面向导&#xff1a;开发>接口权限>网页服务>网页授权>修改。开发的项目需要放到已经解析好服务器域名的服务器下&#xff0c;同时把Mp***.text文件放到服务器根目录下&#xff0c;此时你的服务器必须能联通外网也就是有公网IP,并且80端口是打开的&am…

javascript学习系列(18):数组中的include方法

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说…

curPos和tgtPos

curpos tgtpos 乍一看以为是当前位置和目标位置&#xff0c;但在项目里面这两个位置有点坑 当客户端玩家移动或者AI里面的位置&#xff0c;会把获得的位置付给tgtpos 而以前的tgtpos会付给curpos 所以这个tgtpos是当前玩家或者怪物站立的位置&#xff0c;而curpos是上一个位置 …

JS之获取指定位置Unicode的charCodeAt()方法

用法&#xff1a;charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数 语法&#xff1a;stringObject.charCodeAt(index) 参数&#xff1a;必需。表示字符串中某个位置的数字&#xff0c;即字符在字符串中的下标 注:1&#xff1a;方法…