赞
踩
1、
首先这个exit是针对你整个程序的进程而言的,也就是说让你的进程退出(不管这行代码是在程序的哪个地方,哪个函数),并返回了这个值。 然后,你要知道你的程序的进程是有父进程的,除了系统开机时自启动的进程(Linux里面就是init,PID是0)。所以返回的这个值就会被你的程序的父进程接受到,进而知道你的程序是正常退出还是出错中断的。
在main函数中我们通常使用return (0);这样的方式返回一个值。
但这是限定在非void情况下的也就是void main()这样的形式。
exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束跳会操作系统。
但在如果把exit用在main内的时候无论main是否定义成void返回的值都是有效的,并且exit不需要考虑
#include <iostream>
#include <string>
using namespace std;
int main()
{
exit (1);//等价于return (1);
}
数字0,1,-1会被写入环境变量ERRORLEVEL,其它程序可以由此判断程序结束状态。 一般0为正常推出,其它数字为异常,其对应的错误可以自己指定。
这是一般用来区别错误状态的一种函数返回状态法,除了以外的数字都是有错误的,但是错误类别是可以区分的,根据那个数字来区分:一般在errorno变量中!exit用于在程序运行的过程中随时结束程序,函数原型void exit(int status),exit的参数是返回给操作系统的。这个参数识了应用程序的一些运行信息。 和操作系统有关一般是0为正常退出,非0为非正常退出。非0的数字可以是自己拟定的可以是任意一个整型数字。 通过这个参数用来标识程序是在那一部分退出的。如问题中的程序,如果操作系统检测到程序退出时exit的参数是-1,那么就可以知道是因为if(f1==NULL || f2==NULL)中的表达式为真而退出的。如果不是-1而是其他的数字,那么代表程序是在其他地方退出的。
2、
http://bbs.chinaunix.net/thread-3758347-1-1.html
如题, 比如下面的代码。return -1;会被执行吗?这是个if(),它会return到哪里去呢。请指教下。 if (ioctl(raw_sock_fd, SIOCGIFHWADDR, &ifstruct) == -1) { printf("\nioctl SIOCGIFHWADDR [%s] Error!!!", dev_name); close(raw_sock_fd); exit(1); return -1; } |
if外面也有return……那可能只是维护上的原因了。比如原来就有return,后来把这里改成exit又没清理干净。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。