return n和exit(int n)小结

来源:互联网 发布:史蒂芬斯数据库 编辑:程序博客网 时间:2024/06/04 19:57

exit(int n)其实就是直接退出程序,因为默认的标准程序入口为
int main(int argc, char** argv),返回值是int型的。
一般在shell下面,运行一个程序,然后使用命令echo $?就能得到该程序的返回值,也就是退出值,在main()里面,你可以用return n,也能够直接用exit(n)来做。unix默认的习惯正确退出是返回0,错误返回非0。

 

理论上exit(int n)可以返回任何int整数(<255)。返回的不同数值主要是给调用者作不同处理的。
单独的进程是返回给操作系统的。如果是多进程,是返回给父进程的。
在父进程里面调用waitpid()等函数得到子进程退出的状态,以便作不同处理

 

exit(0) 表示程序正常, exit(1)/exit(-1)表示程序异常退出
exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束
exit(1)表示进程正常退出. 返回 1;
exit(0)表示进程非正常退出. 返回 0.

return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时.如果有时要检测上进程是否正常退出的.就要用到上个进程的返回值..
return只是 所在函数返回,后面会继续执行

 

C程序的终止分为两种: 正常终止和异常终止.
正常终止分为: return, exit, _exit, _Exit, pthreade_exit
异常中指分为: abort, SIGNAL, 线程响应取消
主要说一下正常终止的前4种, 即exit系列函数.
#include <stdlib.h>    /* ISO C */
void exit(int status);
void _Exit(int status);
#include <unistd.h>    /* POSIX */
void _exit(int status);
以上3个函数的区别是:
exit()(或return 0)会调用终止处理程序和用户空间的标准I/O清理程序(如fclose), _exit和_Exit不调用而直接由内核接管进行清理.
因此, 在main函数中exit(0)等价于return 0.

原创粉丝点击