内容简介:为什么当我将退出代码$?,在Perl中移位8时,当我期望它为-1时,我得到255?翻译自:https://stackoverflow.com/questions/2726447/why-is-the-exit-code-255-instead-of-1-in-perl
为什么当我将退出代码$?,在 Perl 中移位8时,当我期望它为-1时,我得到255?
‘wait()’返回的退出状态是一个16位值.在这16位中,高位8位来自’exit()’返回的值的低位8位 – 或者从main()返回的值.如果程序自然死亡,则16的低位8位全为零.如果程序因信号而死,则低8位编码信号编号,并指示是否发生核心转储.对于一个信号,退出状态被视为零 – 像 shell
这样的程序倾向于将低阶位非零解释为失败.
15 8 7 0 Bit Position +-----------------+ | exit | signal | +-----------------+
大多数机器实际上将16位值存储在32位整数中,并且使用无符号算术处理.如果进程以’exit(-1)’退出,则16的高阶8位可以全1,但是当右移8位时,它将显示为255.
如果您真的想将值转换为有符号数量,则必须根据第16位进行一些比特操作.
$status >>= 8; ($status & 0x80) ? -(0x100 - ($status & 0xFF)) : $status;
翻译自:https://stackoverflow.com/questions/2726447/why-is-the-exit-code-255-instead-of-1-in-perl
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
App研发录:架构设计、Crash分析和竞品技术分析
包建强 / 机械工业出版社 / 2015-10-21 / CNY 59.00
本书是作者多年App开发的经验总结,从App架构的角度,重点总结了Android应用开发中常见的实用技巧和疑难问题解决方法,为打造高质量App提供有价值的实践指导,迅速提升应用开发能力和解决疑难问题的能力。本书涉及的问题有:Android基础建设、网络底层框架设计、缓存、网络流量优化、制定编程规范、模块化拆分、Crash异常的捕获与分析、持续集成、代码混淆、App竞品技术分析、项目管理和团队建设等......一起来看看 《App研发录:架构设计、Crash分析和竞品技术分析》 这本书的介绍吧!