我的perl脚本temp.pl看起来像:
exit 256;
如果我这样做:
perl temp.pl
echo $?
答案是0。
如果我改变了,将perl脚本改为
exit 255;
然后再做一次,回答是255。
有什么不对吗?
答案 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)。