`
kanpiaoxue
  • 浏览: 1781532 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

python的sys.exit()的0-255问题

 
阅读更多

 

最近写了一个python脚本用到了sys.exit(exit_code) ,遇到一个奇怪的问题。当exit_code=256的时候,预期python调用sys.exit(exit_code) 之后退出进程之后的退出码应该是256,可实际情况退出码是0. 这引发我这边的程序异常,判断任务是运行成功的。

问题的根节就在:sys.exit(256) 的时候python的退出码是0. 我又验证了一下,sys.exit(exit_code)  中的exit_code是256的整数倍的时候,python进程退出码全部是0.

找了一些资料,发现这个是python自身的限制问题。 

 

如下的资料:

http://hk.uwenku.com/question/p-tfxlltaj-bke.html

https://stackoverflow.com/questions/4448339/how-to-bypass-the-0-255-range-limit-for-sys-exit-in-python

 

该如何处理 sys.exit(256)  python退出码是 0 的问题? 保证程序能够按预期退出?

做法:

1、可以记录一下退出码到日志,然后让python抛出异常,来退出python进程

2、使用sys.exit(exit_code) 的时候,让exit_code只能是 0 或者 1 ,避免其他退出码情况的出现

3、自己处理一下exit_code=256倍数的情况

4、参考上面的参考资料里面的做法,对exit_code进行移位处理

 

分享到:
评论

相关推荐

    详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别

    详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别 os._exit() 和 sys.exit() os._exit() vs sys.exit() 概述 Python的程序有两中退出方式:os._exit(), sys.exit()。本文介绍这两种方式的...

    Python中exit、return、sys.exit()等使用实例和区别

    ### Python中exit、return、sys.exit()的使用与区别 #### 一、引言 在Python编程中,控制程序流程的几种方式包括`return`、`exit`以及`sys.exit()`。这些关键字或函数用于终止函数执行或者结束整个程序运行。它们在...

    python命令行参数sys.argv使用示例

    > 3: print “Usage: ” + sys.argv[0] + “file1 file2” sys.exit(-1) file1 = sys.argv[1]file2 = sys.argv[2] list1 = {}for line in open(file1): list1[line.split()[0]] = 1 for line in open(file2): ...

    Python sys.argv用法实例

    - 执行命令`python test.py --version help`时,`sys.argv`将包含三个元素:`sys.argv[0]`为`"test.py"`,`sys.argv[1]`为`"--version"`,`sys.argv[2]`为`"help"`。 - 脚本首先打印`sys.argv[0]`、`sys.argv[1]`...

    pynaoqi-python2.7-2.1.4.13-mac64.tar.gz

    sys.exit(1) # 获取并启动语音服务 tts_service = session.service("ALTextToSpeech") tts_service.say("你好,世界!") # 关闭连接 session.close() ``` 六、持续学习与进阶 为了深入学习和熟练使用NAOqi ...

    详解Python中 sys.argv[]的用法简明解释

    ### Python中`sys.argv[]`的深入解析 #### 一、引言 在Python编程中,经常需要处理来自命令行的参数。这些参数对于脚本的动态化和灵活性至关重要。`sys.argv` 是一个非常实用的功能,允许程序员访问传递给脚本的...

    python sys.argv[]用法实例详解

    sys.argv是一个列表,列表中的第一个元素(sys.argv[0])是脚本的名字(即运行的Python文件名),其余的元素(从sys.argv[1]开始)则依次是命令行中传递给脚本的参数。 具体来讲,当一个Python脚本被命令行启动时,...

    02python核心编程阶段-python基础.rar

    Python是一种高级、通用的编程语言,以其简洁明了的语法和强大的功能而受到广大程序员的欢迎。"02python核心编程阶段-python基础.rar"这个压缩包文件似乎包含了深入学习Python编程的基础内容,从基本语法到实际应用...

    python多线程调用exit无法退出的解决方法

    这样,当主线程调用`sys.exit()`时,即使`my_thread`还在运行,Python解释器也会终止,从而解决了多线程调用`exit()`无法退出的问题。 需要注意的是,守护线程不保证按照任何特定的顺序结束,而且它们不能在运行时...

    05-python-sys模块简介-与操作系统进行交互-CSV文件和CSV模块-正则表达式

    例如,`sys.argv`是一个列表,包含了命令行中传递的所有参数,`sys.exit()`函数可以用来终止程序执行,而`sys.path`则包含了Python搜索导入模块的路径列表。了解并熟练使用sys模块,可以让你更好地理解和控制Python...

    PYTHON学习教程-08-多线程.zip

    前情回顾 1.epoll模型 : 效率高 , 触发方式更多 2.本地套接字 AF_UNIX 本地两个进程间的消息通信 3.多任务编程 * 并行 和 并发 * 进程 线程 4. 多进程编程 ... os._exit() sys.exit() 8. 孤儿进程和僵尸进程

    Python的几种主动结束程序方式

    对于如何结束一个Python程序或者用Python操作去结束一个进程等,Python本身给出了好几种方法,而这些方式也存在着一些区别,对相关的几种方法看了并实践了下,同时也记录下。 参考: ...sys.exit(0

    python中sys.argv参数用法实例分析

    ### Python中的`sys.argv`参数详解 #### 一、引言 在Python编程中,能够通过命令行传递参数给脚本是一项非常实用的功能。这不仅可以提高脚本的灵活性,还能让脚本具备处理多种任务的能力。`sys.argv`是Python标准库...

    (续3)Python3.x+Pyqt5实现主窗体里的工具栏,且工具栏里可以同时显示图标和文字

    sys.exit(app.exec_()) ``` 通过以上步骤,你就成功创建了一个包含图标的工具栏的PyQt5应用程序。注意,你需要替换示例代码中的`icon_path`为你的实际图标文件路径。你可以根据需求自定义按钮的行为,例如设置...

    PyQt5.zip--lib包

    sys.exit(app.exec_()) ``` 这段代码创建了一个名为`MainWindow`的类,继承自`QWidget`,设置了窗口的标题和位置大小。`QApplication`实例化后,我们创建一个`MainWindow`对象并调用其`show`方法显示窗口,最后...

    python-3.6.2-docs-pdf-a4

    - **标准库**:Python标准库提供大量预先编写好的模块,如os、sys、math、datetime等,涵盖文件操作、系统交互、网络通信等多个领域。 3. **异常处理**: - **try-except**:Python通过try/except语句来捕获和...

    Python_sys.argv用法.pdf-综合文档

    当运行脚本时,比如使用命令`python cat.py file.txt`,那么`cat.py`就是sys.argv[0],而`file.txt`就是sys.argv[1]。 接下来,文件内容中说明了如何检测参数个数。例如,`if len(sys.argv) ...

    Python程序的四种退出方法

    sys.exit() 函数是 Python 的标准库模块 sys 中的函数,用于退出 Python 解释器会话。与 exit() 函数类似,sys.exit() 函数也可以带一个整数参数,表示退出状态码。 在 Jupyter notebook 中,使用 sys.exit() 函数...

Global site tag (gtag.js) - Google Analytics