美文网首页
_exit、exit、return区别

_exit、exit、return区别

作者: eesly_yuan | 来源:发表于2017-05-31 22:11 被阅读71次

这三个函数的区别多少知道一点,但对其细节有时候会忘了这里进行简单总结一下备忘

return是跳出当前的函数执行环境,返回到调用处
_exit和exit则均可以结束一个正常执行的程序

在main中调用return将返回到运行库的入口函数中,后面将调用exit,exit内部又将调用_exit

main->return->exit->_exit

通过上述的调用关系可以看出,return的含义比较明显(即返回到调用处),下面将简单说明exit和_exit的执行流程。

exit(status)
(1)All functions registered with atexit(3) and on_exit(3) are called, in the reverse order of their registration. **
(2)
All open stdio(3) streams are flushed and closed. Files created by tmpfile(3) are removed.**
(3)call _exit()

_exit(status)
_exit内部调用系统调用sys_exit,系统调用内执行的动作就比较多源码参见do_exit(),大致的流程为
(1)exit_mm(); 尝试释放映射的内存页
(2)exit_sem(tsk); 尝试释放信号量相关结构
(3)exit_shm(tsk); 尝试释放共享数据的相关结构
(4)exit_files(tsk); 尝试释放struct_file结构
(5)exit_fs(tsk); 尝试释放struct_fs结构等

相关文章

  • _exit、exit、return区别

    这三个函数的区别多少知道一点,但对其细节有时候会忘了这里进行简单总结一下备忘 return是跳出当前的函数执行环境...

  • exit(0)与exit(1)、return区别(转载)

    exit(0)与exit(1)、return区别 exit(0):正常运行程序并退出程序; exit(1):非正常...

  • exit(0) exit(1)与return()的区别

    转载:C语言 exit(0)与exit(1)、return区别 - 米深 - 博客园 exit(0):正常运行程序...

  • exit() _exit() return

    exit(0):正常运行程序并退出程序; exit(1):非正常运行导致退出程序; return():返回函数,若...

  • exit(0),exit(1),return

    exit(1):非正常退出,比如代码出现在不应该出现的分支,要求终止程序时用exit(1)exit(0):正常退出...

  • exit()和_exit()区别

    如图所示:_exit()函数的作用是:直接使进程停止运行,清除其使用的内存空间,并清除其在内核的各种数据结构;ex...

  • shell基础(五)

    一、循环终止的特殊命令 break、exit、continue、return的区别 例一: 效果如图: 实战一: ...

  • 2018-10-21

    进程终止 exit(int) 执行若干清理活动之后调用 _Exit(int) 返回内核。等价于主函数 return...

  • python 中 os._exit(), sys.exit(),

    python 中 os._exit(), sys.exit(), exit() 的区别是什么? 退出方式不一样( ...

  • iOS exit(),abort(),assert()

    iOS exit(),abort(),assert()函数区别 exit() 退出程序abort() 停止程序,a...

网友评论

      本文标题:_exit、exit、return区别

      本文链接:https://www.haomeiwen.com/subject/lknjfxtx.html