预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Linux系统命令中exit与exit的区别关于Linux系统命令中exit与exit的区别注:exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出,一般都用-1或者1,标准C里有EXIT_SUCCESS和EXIT_FAILURE两个宏,用exit(EXIT_SUCCESS);可读性比较好一点。作为系统调用而言,_exit和exit是一对孪生兄弟,它们究竟相似到什么程度,我们可以从Linux的源码中找到答案:#define__NR__exit__NR_exit/*摘自文件include/asm-i386/unistd.h第334行*/"__NR_"是在Linux的源码中为每个系统调用加上的前缀,请注意第一个exit前有2条下划线,第二个exit前只有1条下划线。这时随便一个懂得C语言并且头脑清醒的人都会说,_exit和exit没有任何区别,但我们还要讲一下这两者之间的区别,这种区别主要体现在它们在函数库中的定义。_exit在Linux函数库中的原型是:#includevoid_exit(intstatus);和exit比较一下,exit()函数定义在stdlib.h中,而_exit()定义在unistd.h中,从名字上看,stdlib.h似乎比unistd.h高级一点,那么,它们之间到底有什么区别呢?_exit()函数的作用最为简单:直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构;exit()函数则在这些基础上作了一些包装,在执行退出之前加了若干道工序,也是因为这个原因,有些人认为exit已经不能算是纯粹的系统调用。exit()函数与_exit()函数最大的区别就在于exit()函数在调用exit系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件,就是"清理I/O缓冲"。exit()在结束调用它的进程之前,要进行如下步骤:1.调用atexit()注册的函数(出口函数);按ATEXIT注册时相反的'顺序调用所有由它注册的函数,这使得我们可以指定在程序终止时执行自己的清理动作.例如,保存程序状态信息于某个文件,解开对共享数据库上的锁等.2.cleanup();关闭所有打开的流,这将导致写所有被缓冲的输出,删除用TMPFILE函数建立的所有临时文件.3.最后调用_exit()函数终止进程。_exit做3件事(man):1,Anyopenfiledescriptorsbelongingtotheprocessareclosed2,anychildrenoftheprocessareinheritedbyprocess1,init3,theprocess‘sparentissentaSIGCHLDsignalexit执行完清理工作后就调用_exit来终止进程。此外,另外一种解释:简单的说,exit函数将终止调用进程。在退出程序之前,所有文件关闭,缓冲输出内容将刷新定义,并调用所有已刷新的“出口函数”(由atexit定义)。_exit:该函数是由Posix定义的,不会运行exithandler和signalhandler,在UNIX系统中不会flush标准I/O流。简单的说,_exit终止调用进程,但不关闭文件,不清除输出缓存,也不调用出口函数。共同:不管进程是如何终止的,内核都会关闭进程打开的所有filedescriptors,释放进程使用的memory!更详细的介绍:Callingexit()Theexit()functioncausesnormalprogramtermination.Theexit()functionperformsthefollowingfunctions:1.AllfunctionsregisteredbytheStandardCatexit()functionarecalledinthereverseorderofregistration.Ifanyofthesefunctionscallsexit(),theresultsarenotportable.2.Allopenoutputstreamsareflushed(datawrittenout)andthestreamsareclosed.3.Allfilescreatedbytmpfile()ared.4.The_exit()functioniscalled.Calling_exit()The_exit()functionperformsoperatingsystem-specificprogramterminationfunctions.Theseinclude:1.Allopenfiledescriptorsanddirectorystr