C: exit的值

运行node的process.exit时候发现了以前忽视的一个问题:

$ node
> process.exit(-1)

$ echo $?
255

我希望exit的值是-1,结果成了255。

===

http://stackoverflow.com/questions/12512177/exit-status-of-a-program 给出的解释:

Program return values mean different things on different operating systems. On Unix-y systems, only values 0-255 are valid (1 unsigned byte). Note this means negative values are not allowed, and may be the cause of your IDE problems. FreeBSD introduced a load of specific meanings in sysexits.h, and while this certainly exists on Linux distributions I've used, the only real universally accepted one is 0 for success and non-0 for failure. As Pete Becker points out, EXIT_SUCCESS and EXIT_FAILURE are standard defined macros (0 and 1 respectively on Unix-y platforms, but implementation defined).

On windows, you get a 32 bit signed integer (negatives are allowed, don't know if they mean anything). Again, 0 is success, and other values mean various things. Like echo $?, you can use echo %errorlevel% to see the last program's exit code in the console.

Also note that my N3337 (draft very close to C++11 standard) says at section 3.6.1 paragraph 5:

If control reaches the end of main without encountering a return statement, the effect is that of executing return 0;

===

C语言示例:

示例1

#include <stdio.h>

int 
main() 
{

    return 0;

}

退出码为0。

示例2

#include <stdio.h>

int 
main() 
{

    return -1;

}

退出码为255.

示例3

#include <stdio.h>
#include <stdlib.h>

int 
main() 
{

    exit(-1);

}

退出码为255.

转载于:https://my.oschina.net/letiantian/blog/656556

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值