考虑一个 python 脚本 error.py
import sys
sys.exit(3)
Invoking
python error.py; echo $?
产生预期的“3”。但是,考虑 runner.py
import os
result = os.system("python error.py")
print result
产生 768。似乎 python 代码的结果以某种方式左移了 8,但这两种情况有何不同尚不清楚。这是怎么回事?
这发生在 python 2.5 和 2.6 中。
来自docs http://docs.python.org/library/os.html#os.system:
在 Unix 上,返回值是编码为的进程的退出状态
为 wait() 指定的格式。请注意,POSIX 没有指定
C system() 函数的返回值的含义,因此 return
Python 函数的值取决于系统。
os.wait()
等待子进程完成,并返回一个包含以下内容的元组
其pid和退出状态指示:一个16位数字,其低字节为
杀死进程的信号号,其高字节是
退出状态(如果信号号为零);低位的高位
如果生成了核心文件,则设置字节。
在你的例子中,二进制的返回值 768 是00000011 00000000
。高字节为3。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)