主函数返回值范围

2024-04-18 04:31:59 发布

您现在位置:Python中文网/ 问答频道 /正文

标准对主要返回值的范围有何规定? 最多只能说255个?

因为

int main(void){
return 256;
}
echo $? ;  # out 0

Tags: echo标准returnmainoutint返回值void
3条回答

标准没有规定。0EXIT_SUCCESSEXIT_FAILURE具有(某种)指定的含义。其他的一切都取决于实现。

目前,大多数基于Unix的系统只支持8位返回值。Windows支持(至少)32位返回值。我没有检查64位Windows是否支持64位返回值,但我对此表示怀疑,因为即使是64位Windows通常仍然使用32位int

正如其他人所陈述的,C&AMP+C++标准不限制返回值,而不是声明(1)^ {< CD1>}返回^ {< CD2>}(这是一个实现定义的大小),(2)零(或^ {CD3>})是成功的返回,^ {< CD4>}是不成功的返回。它确实指定不显式返回值的main被视为返回了零。

在这种情况下,返回值的解释取决于等待进程完成的进程(通过调用waitwaitpidwaitid)。waitwaitpid是旧的POSIX函数,它们只指定the least significant eight bits of the return value shall be available to a waiting parent process。POSIX:2008标准添加了waitid作为一个通用的等待方法,它可以访问子进程的完全退出状态。

在派生出一个子进程之后,另一个进程调用其中一个wait函数来休眠,直到派生的进程完成(例如,从main返回,调用exitabort或其他东西)。waitwaitpid函数通过指向整数的指针返回状态。调用方使用WIFEXITED(status_val)WEXITSTATUS(status_val)宏提取实际的退出状态。后者由POSIX定义,需要返回the low-order 8 bits of the status argumentwaitid函数使用指向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的退出代码。

相关问题 更多 >