return n和exit(int n)小结

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.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`return` 和 `exit()` 都能用于终止程序的执行,但是它们的作用不同。 - `return` 语句用于从函数中返回值,并将控制权交回到调用者。`return` 语句只能用于函数中,不能用于主函数中,也不能用于终止整个程序的执行。 - `exit()` 函数用于终止整个程序的执行,并返回一个整数值给调用进程。`exit()` 函数可以用于主函数中或子函数中,但是不能用于返回值给调用者。 因此,如果你只是想从一个函数中返回值,应该使用 `return` 语句。如果你想终止整个程序的执行,应该使用 `exit()` 函数。 下面是一个示例,演示了 `return` 语句和 `exit()` 函数的区别: ```c #include <stdio.h> #include <stdlib.h> int foo() { printf("This is the beginning of the function.\n"); return 0; // 从函数中返回值,并将控制权交回到调用者 printf("This is the end of the function.\n"); // 这行代码不会执行 } int main() { printf("This is the beginning of the program.\n"); foo(); // 调用函数 printf("This is the end of the program.\n"); return 0; } ``` ```c #include <stdio.h> #include <stdlib.h> int main() { printf("This is the beginning of the program.\n"); exit(0); // 终止程序,并返回0表示程序正常终止 printf("This is the end of the program.\n"); // 这行代码不会执行 return 0; } ``` 在第一个示例中,我们在一个函数中使用了 `return` 语句,用于从函数中返回值,并将控制权交回到调用者。在主函数中,我们调用了这个函数,然后继续执行程序中的其他语句。 在第二个示例中,我们在主函数中使用了 `exit()` 函数,用于终止整个程序的执行,并返回0表示程序正常终止。由于调用了 `exit()` 函数,程序立即终止,不会执行函数后面的语句,也不会执行程序中的其他语句。 因此,`return` 和 `exit()` 都能用于终止程序的执行,但是它们的作用不同,需要根据具体情况选择使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值