运行node的process.exit时候发现了以前忽视的一个问题:
1$ node 2> process.exit(-1) 3 4$ echo $? 5255
我希望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
1#include <stdio.h> 2 3int 4main() 5{ 6 7 return 0; 8 9}
退出码为0。
示例2
1#include <stdio.h> 2 3int 4main() 5{ 6 7 return -1; 8 9}
退出码为255.
示例3
1#include <stdio.h> 2#include <stdlib.h> 3 4int 5main() 6{ 7 8 exit(-1); 9 10}
退出码为255.