Jer*_*fin 19
标准没有说.0
,EXIT_SUCCESS
并EXIT_FAILURE
具有(某种)指定的含义.其他任何东西都取决于实施.
目前,大多数基于Unix的系统仅支持8位返回值.Windows支持(至少)32位返回值.我还没有检查64位Windows是否支持64位返回值,但我更加怀疑它,因为即使是64位Windows通常仍然使用32位int.
D.S*_*ley 15
正如其他人所说的那样,C&C++标准除了声明(1)main
返回一个int
(具有实现定义的大小)和(2)零(或EXIT_SUCCESS
)是成功的返回之外,不会限制返回值.EXIT_FAILURE
是一次不成功的回归.它确实指定main
明确不返回值的a被视为返回零.
在这种情况下,返回值的解释取决于等待进程完成的进程(通过调用wait,waitpid或waitid). wait和waitpid是较旧的POSIX函数,它们指定只有返回值的最低有效8位才可用于等待的父进程.POSIX:2008标准将waitid添加为可以访问子进程的完全退出状态的通用等待方法.
分叉关闭一个子进程后,另一个进程调用的一个等待功能休眠,直到分叉过程完成(例如,从收益main
,来电exit
或abort
什么的).在等待和waitpid函数功能返回的状态通过一个指向整数的方式.调用者使用WIFEXITED(status_val)
和WEXITSTATUS(status_val)
宏提取实际的退出状态.后者由POSIX定义,并且需要返回status参数的低8位.所述waitid函数使用一个指向siginfo_t
结构返回进程的状态信息.该si_status
成员包含状态信息中描述的完整状态值.
基本上,退出状态的值在旁观者眼中.ANSI/ISO规范是开放式的.POSIX套件有多种方法可以等待进程完成并获取其退出状态.POSIX还将spawn定义为一个较轻的版本,exec
其中有一组对退出状态值的约束.Shell有进一步限制结果值的习惯 - GNU的bash将返回状态限制为7位,而POSIX兼容的shell将退出状态值限制为8位.FWIW,大多数人都认为限制你的回报值低于64似乎是安全的.
归档时间: |
|
查看次数: |
7794 次 |
最近记录: |