_exit、exit、return区别
程序员文章站
2022-07-13 23:33:56
...
这三个函数的区别多少知道一点,但对其细节有时候会忘了这里进行简单总结一下备忘
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与return的区别
推荐阅读
-
关于QT程序中出现collect2: ld returned 1 exit status
-
C++ 中exit(),_exit(),return,abort()函数的区别
-
php中跳出函数break,continue,exit的使用与区别
-
IOS 签名错误codesign failed with exit code 1解决方法
-
return 跟echo的区别
-
Oracle 中的GOTO,RETURN,EXIT
-
laravel路由就写了个exit('test');打开页面需要4秒
-
PHP中return 和 exit 、break和contiue 区别与用法_PHP教程
-
php 中 return exit break contiue 详解
-
PHP的几个程序停止关键字break,return,exit