使用256

时间:2016-02-29 06:55:25

标签: perl

我的perl脚本temp.pl看起来像:

exit 256;

如果我这样做:

perl temp.pl
echo $?

答案是0。

如果我改变了,将perl脚本改为

exit 255;

然后再做一次,回答是255。

有什么不对吗?

2 个答案:

答案 0 :(得分:1)

是的,退出返回码仅限于单字节 - 0到255。

完整的退出代码由退出代码本身和标志组成,这些标志表示程序如何退出 - 无论是定期还是由于某些信号(被杀死,中断,暂时停止等)。

因此,exit()函数的值始终会被0xff屏蔽,以免与信号传递冲突。

答案 1 :(得分:0)

在Linux(以及大多数unix系统)上,传递给exit的状态限制为8位(0到255)。

  

void exit(int status);

     

exit()函数导致正常的进程终止,status & 0377的值返回给父进程(参见wait(2))。

它限制为8位的原因是支持具有16位int的系统。在int中,wait必须传达以下信息:

  • 流程是否正常存在(例如通过exit)。
  • 如果它正常退出,
    • 状态传递给exit
  • 如果被信号终止,
    • 杀死进程的信号数。
    • 是否制作了核心转储。

在Windows上,传递给exit的状态限制为16位(0到65535)。