我需要决定在不同的场景中使用哪个退出代码exit()。
Are there any standard exit status codes in Linux?
但是我需要编写一些跨平台的Linux+Windows的东西。MSWindows似乎没有/usr/include/sysexits.h
这样的东西;它只有C89的stdlib.h
,它提供
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
那么,这两个是唯一的可移植的东西吗?或者Windows有一些更复杂的平台标准退出代码吗?
注意:我指的当然不是System Error Codes。
2条答案
按热度按时间pinkon5k1#
如果进程没有正常终止,您经常会在Windows上看到一些退出代码。这些代码是很大的负数,如
-1073741510
,并在ntstatus.h
中定义。最常见的退出代码是:0xC0000005
至STATUS_ACCESS_VIOLATION
:基本上相当于segfaultx1月4日至x1月5日
0xC000013A
至STATUS_CONTROL_C_EXIT
:应用程序被Ctrl+C中断有a large table on MSDN,虽然我不认为你会看到他们中的大多数作为退出代码。
对于应用程序定义的代码,情况与Linux相同。通常您选择一些退出代码并在文档中描述它们。
对于那些写批处理文件的人,要注意CMD会将上面的退出代码解释为带负数号的整数,所以测试
IF ERRORLEVEL 0
会成功地使用这些代码。lfapxunr2#
是否有与标准(ish)UN*X进程退出代码等效的Windows退出代码?
不,因为在实践中没有IXis标准退出代码(除了
0
表示成功和其他任何东西)。