微软官方MSDN原版Win10系统下载

现在位置: 首页  > 系统教程  > Linux教程

Linux下exit命令和_exit命令区别盘点

时间:2024-11-23 03:20:00   

大家好,今天Win10系统之家小编给大家分享「Linux下exit命令和_exit命令区别盘点」的知识,如果能碰巧解决你现在面临的问题,记得收藏本站或分享给你的好友们哟~,现在开始吧!

Linuxman - Linux 命令速查手册系列软件最新版本下载

  在Linux系统的命令中,exit命令和_exit命令看似相同实则有着不同的作用,那么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函数库中的原型是:

  #i nclude《unistd.h》 void _exit(int status);

  和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,Any open file descriptors belonging to the process are closed 2,any children of the process are inherited by process 1, init 3,the process‘s parent is sent a SIGCHLD signal

  exit执行完清理工作后就调用_exit来终止进程。

  此外,另外一种解释:

  简单的说,exit函数将终止调用进程。在退出程序之前,所有文件关闭,缓冲输出内容将刷新定义,并调用所有已刷新的“出口函数”(由atexit定义)。

  _exit:该函数是由Posix定义的,不会运行exit handler和signal handler,在UNIX系统中不会flush标准I/O流。

  简单的说,_exit终止调用进程,但不关闭文件,不清除输出缓存,也不调用出口函数。

  共同:

  不管进程是如何终止的,内核都会关闭进程打开的所有file descriptors,释放进程使用的memory!

上一页12下一页 剩下全文

以上就是关于「Linux下exit命令和_exit命令区别盘点」的全部内容,本文讲解到这里啦,希望对大家有所帮助。如果你还想了解更多这方面的信息,记得收藏关注本站~

★文②章来自Win10系统之家,未经允许不得转载!

上一篇:返回列表 下一篇:返回列表

相关文章

  • Linux下exit命令和_exit命令区别盘点

    Linux下exit命令和_exit命令区别盘点


      在Linux系统的命令中,exit命令和_exit命令看似相同实则有着不同的作用,那么exit命令和_exit命令具体有哪些区别呢?一起来了解下吧。
      注:exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出,一般都用-1或者1,标准C里有EXIT_SUCCESS和EXIT_FAILURE两个宏,用exit(EXIT_SUCCESS);可...
  • Linux下管理网络必备命令盘点

    Linux下管理网络必备命令盘点


      Linux命令的种类繁多,那么管理网络需要用到哪些命令呢?下面小编就给大家带来管理网络必须知道的Linux命令,感兴趣的朋友一起来了解下吧。
      多数命令都可以在图形桌面执行,即使是没什么终端使用经验的Linux用户也会常常执行命令来使用ping或是其它的网络诊断工具。
      curl&wget
      使用curl或wget命令,不用离开终端就可以下载文件...
  • Linux关机命令大全:Linux各关机命令之间的区别和用法

    Linux关机命令大全:Linux各关机命令之间的区别和用法


      Linux怎么用命令来进行关机/重启呢?Linux是一套免费使用和自由传播的类Unix操作系统,想使用Linux系统的关机命令必须要拿到root权限,下面给大家介绍一些Linux常用的关机命令以及各关机命令之间的区别和用法。
      Linux系统下常用的一些关机命令:
      关机命令:
      1、halt立刻关机
      2、poweroff立刻关机
     ...
  • 小白入门:Linux的重启命令和关机命令

    小白入门:Linux的重启命令和关机命令


      Linux是个非常有名的开源系统,不少程序员喜欢在Linux中开发应用,由于Linux主要是以命令来运行程序,所以与Windows窗口化不同。对于小白而言,如何关机和重启成为了问题,毕竟没有按钮让你点击。下面小编就跟大家分享一下Linux的重启与关机命令,感兴趣的可以看一下。Linux重启命令
      1、reboot;
      2、shutdown-rnow立刻重启(roo...