2024-04-18 04:31:59 发布
网友
标准对主要返回值的范围有何规定? 最多只能说255个?
因为
int main(void){ return 256; } echo $? ; # out 0
标准没有规定。0、EXIT_SUCCESS和EXIT_FAILURE具有(某种)指定的含义。其他的一切都取决于实现。
0
EXIT_SUCCESS
EXIT_FAILURE
目前,大多数基于Unix的系统只支持8位返回值。Windows支持(至少)32位返回值。我没有检查64位Windows是否支持64位返回值,但我对此表示怀疑,因为即使是64位Windows通常仍然使用32位int
正如其他人所陈述的,C&AMP+C++标准不限制返回值,而不是声明(1)^ {< CD1>}返回^ {< CD2>}(这是一个实现定义的大小),(2)零(或^ {CD3>})是成功的返回,^ {< CD4>}是不成功的返回。它确实指定不显式返回值的main被视为返回了零。
main
在这种情况下,返回值的解释取决于等待进程完成的进程(通过调用wait、waitpid或waitid)。wait和waitpid是旧的POSIX函数,它们只指定the least significant eight bits of the return value shall be available to a waiting parent process。POSIX:2008标准添加了waitid作为一个通用的等待方法,它可以访问子进程的完全退出状态。
在派生出一个子进程之后,另一个进程调用其中一个wait函数来休眠,直到派生的进程完成(例如,从main返回,调用exit或abort或其他东西)。wait和waitpid函数通过指向整数的指针返回状态。调用方使用WIFEXITED(status_val)和WEXITSTATUS(status_val)宏提取实际的退出状态。后者由POSIX定义,需要返回the low-order 8 bits of the status argument。waitid函数使用指向siginfo_t结构的指针来返回进程的状态信息。si_status成员包含如Status Information中所述的完整状态值。
exit
abort
WIFEXITED(status_val)
WEXITSTATUS(status_val)
siginfo_t
si_status
基本上,退出状态的值在旁观者的眼中。ANSI/ISO规范是开放式的。POSIX套件有多种方法等待进程完成并获取其退出状态。POSIX还将spawn定义为exec的较轻版本,该版本对退出状态值有自己的一组约束。shell有进一步限制结果值的习惯——GNU's bash将返回状态限制为7位,而aPOSIX-compliant shell将退出状态值限制为8位。FWIW,大多数人都同意将返回值限制为lower than 64 seems to be safe。
exec
在类Unix系统上,退出代码是一个介于0和255之间的数字。您可以返回任何内容,但在Linux中它是moded256。查看一下here以获得关于Linux返回代码的良好解释。还有一个Wikipedia article on the topic专门讨论Windows的退出代码。
标准没有规定。
0
、EXIT_SUCCESS
和EXIT_FAILURE
具有(某种)指定的含义。其他的一切都取决于实现。目前,大多数基于Unix的系统只支持8位返回值。Windows支持(至少)32位返回值。我没有检查64位Windows是否支持64位返回值,但我对此表示怀疑,因为即使是64位Windows通常仍然使用32位int
正如其他人所陈述的,C&AMP+C++标准不限制返回值,而不是声明(1)^ {< CD1>}返回^ {< CD2>}(这是一个实现定义的大小),(2)零(或^ {CD3>})是成功的返回,^ {< CD4>}是不成功的返回。它确实指定不显式返回值的
main
被视为返回了零。在这种情况下,返回值的解释取决于等待进程完成的进程(通过调用wait、waitpid或waitid)。wait和waitpid是旧的POSIX函数,它们只指定the least significant eight bits of the return value shall be available to a waiting parent process。POSIX:2008标准添加了waitid作为一个通用的等待方法,它可以访问子进程的完全退出状态。
在派生出一个子进程之后,另一个进程调用其中一个wait函数来休眠,直到派生的进程完成(例如,从
main
返回,调用exit
或abort
或其他东西)。wait和waitpid函数通过指向整数的指针返回状态。调用方使用WIFEXITED(status_val)
和WEXITSTATUS(status_val)
宏提取实际的退出状态。后者由POSIX定义,需要返回the low-order 8 bits of the status argument。waitid函数使用指向siginfo_t
结构的指针来返回进程的状态信息。si_status
成员包含如Status Information中所述的完整状态值。基本上,退出状态的值在旁观者的眼中。ANSI/ISO规范是开放式的。POSIX套件有多种方法等待进程完成并获取其退出状态。POSIX还将spawn定义为
exec
的较轻版本,该版本对退出状态值有自己的一组约束。shell有进一步限制结果值的习惯——GNU's bash将返回状态限制为7位,而aPOSIX-compliant shell将退出状态值限制为8位。FWIW,大多数人都同意将返回值限制为lower than 64 seems to be safe。在类Unix系统上,退出代码是一个介于0和255之间的数字。您可以返回任何内容,但在Linux中它是moded256。查看一下here以获得关于Linux返回代码的良好解释。还有一个Wikipedia article on the topic专门讨论Windows的退出代码。
相关问题 更多 >
编程相关推荐