_exit()函数与exit()函数的区别

exit()在结束调用它的进程之前,要进行如下步骤:

1.cleanup();

2.在atexit()注册的函数;

‘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://yiluohuanghun.blog.51cto.com/3407300/1184855

时间: 2025-01-09 11:20:28

_exit()函数与exit()函数的区别的相关文章

exit与return区别

1. exit用于结束正在运行的整个程序,它将参数返回给OS,把控制权交给操作系统:而return 是退出当前函数,返回函数值,把控制权交给调用函数.2. exit是系统调用级别,它表示一个进程的结束:而return 是语言级别的,它表示调用堆栈的返回.3. 在main函数结束时,会隐式地调用exit函数,所以一般程序执行到main()结尾时,则结束主进程.exit将删除进程使用的内存空间,同时把错误信息返回给父进程.4. void exit(int status); 一般status为0,表示

Linux多任务编程(四) exit()函数及其基础实验

exit()和_exit()函数 函数说明 创建进程使用fork()函数,执行进程使用exec函数族,终止 进程则使用exit()和_exit()函数.当进程执行到exit()或_exit()函数时,进程会无条件的停止剩下的所有操 作,清除各种数据结构,并终止本进程的运行.但是,这两个函数还是有区别的,其调用过程如图1所示: 从图1可以看出,_exit()函数的作用是:直接使进程停止运行,清除其使用的内存空间,并清除其 在内核中的各种数据结构:而exit()函数则在这些基础上做了一些包装,在执行

实例研究PHP函数isset和empty的区别

实例研究PHP函数isset()和empty()的区别   1  <? php error_reporting(E_ALL);  2  echo   ' <B>未定义$var</b><Br> ' ;  3  echo   " isset测试:<Br> " ;  4  if  ( isset ( $var ))  5 {  6      echo   ' 变量$var存在!<Br> '  ;  7 }  8    9   

用C++异常取代exit()函数

从C语言开始接触C++的人,恐怕都知道exit()这个函数,似乎现在很多的程序员都有这样一种习惯,在程序一遇到错误.或任务刚完成时,把调用exit()函数当成是一种最好的结束程序的方法.在以前遗留的许多老式C/C++代码中,这种现象非常普遍,但当手头的软件项目逐步进展并越来越大时,就不得不面临合并以前分散的各个模块这项工作,此时,如果还有人记得起软件日志记录.错误宽容度.或至少适当的清理工作,就已经是万幸了.本文中要说的方法,决不是一条设计准则,但是可减轻修正那些未良好设计及实现的老式代码时所带

JavaScript中的函数声明和函数表达式区别浅析

 这篇文章主要介绍了JavaScript中的函数声明和函数表达式区别浅析,本文总结的浅显易懂,非常好的一篇技术文章,需要的朋友可以参考下     记得在面试腾讯实习生的时候,面试官问了我这样一道问题. 代码如下: //下述两种声明方式有什么不同 function foo(){}; var bar = function foo(){};   当初只知道两种声明方式一个是函数声明一个是函数表达式,具体有什么不同没能说得很好.最近正好看到这方面的书籍,就想好好总结一番. 在ECMAScript中,有两

js函数与php函数的区别实例浅析

 这篇文章主要介绍了js函数与php函数的区别,以实例形式较为简单的分析了js函数与php函数语法及应用上的不同点,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例分析了js函数与php函数的区别.分享给大家供大家参考.具体分析如下: 在PHP语法中,函数就是语法上的结构体,不是一个变量,不能被赋值: 在JS中,函数也是一种变量,变量名就是函数名. 代码如下: <html> <head> </head> <body> <script typ

浅析javascript函数定义的几种区别

 本篇文章主要是对javascript函数定义的几种区别进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 javascript函数的定义   1:调用关键字function来构造,如: function distance(x1,x2,y1,y2) { var dx=x2-x1; var dy=y2-y1; return Math.sqrt(dx*dx+dy*dy); }   2:使用Function()构造函数 var f=new Function*"x","

浅析javascript中函数声明和函数表达式的区别

这篇文章主要介绍了浅析javascript中函数声明和函数表达式的区别,需要的朋友可以参考下     javascript中声明函数的方法有两种:函数声明式和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函数可以在函数声明之前调用,而函数表达式的函数只能在声明之后调用. 3).以函数声明的方法定义的函数并不是真正的声明,它们仅仅可以出现在全局中,或者嵌套在其他的函数中,但是它们不能出现在循环,条件或者

c++-VC++中窗口过程函数的wParam和lParam区别??

问题描述 VC++中窗口过程函数的wParam和lParam区别?? VC++中窗口过程函数的wParam和lParam区别??是什么希望解析 解决方案 我要告诉你的是方法,怎么去自学,而不是结论: 看到 https://msdn.microsoft.com/en-us/library/ms646280(VS.85).aspx 这里(google 搜索wm_keydown msdn第一个结果) wParam The virtual-key code of the nonsystem key. S