python 捕捉 ctrl+c 异常方法, os. 您所在的位置:网站首页 c捕获异常 python 捕捉 ctrl+c 异常方法, os.

python 捕捉 ctrl+c 异常方法, os.

2024-06-07 15:14| 来源: 网络整理| 查看: 265

这里写自定义目录标题 python 捕捉 ctrl+c 异常方法第一种方法第二种方法使用 signal 模块 python 中 os._exit() 和 sys.exit() 的用法和区别概述区别exit(0)和 exit(1)

python 捕捉 ctrl+c 异常方法 第一种方法 import sys try: # 运行 except KeyboardInterrupt: # 结束 sys.exit() 第二种方法使用 signal 模块 import signal def exit(signum, frame): print('You choose to stop me.') exit() signal.signal(signal.SIGINT, exit) signal.signal(signal.SIGTERM, exit) while 1: pass

几个常用信号:

SIGINT: 终止进程 中断进程 (control+c)SIGTERM: 终止进程 软件终止信号SIGKILL: 终止进程 杀死进程SIGALRM: 闹钟信号 python 中 os._exit() 和 sys.exit() 的用法和区别 概述

python 的程序有两中退出方式: os._exit() , sys.exit() 。本文介绍这两种方式的区别和选择。

os._exit() 会直接将 python 程序终止, 之后的所有代码都不会继续执行。

sys.exit() 会引发一个异常: SystemExit , 如果这个异常没有被捕获, 那么 python 解释器将会退出。如果有捕获此异常的代码, 那么这些代码还是会执行。捕获这个异常可以做一些额外的清理工作。0 为正常退出, 其他数值 (1-127) 为不正常, 可抛异常事件供捕获。

举例说明

# -*- coding:utf-8 -*- import os import sys try: sys.exit(0) except: print(1) finally: print(2)

结果

1 2 try: os._exit(0) except: print(3) finally: print(4)

结果, 无输出。

区别

综上, sys.exit() 的退出比较优雅, 调用后会引发 SystemExit 异常, 可以捕获此异常做清理工作。os._exit() 直接将 python 解释器退出, 余下的语句不会执行。

一般情况下使用 sys.exit() 即可, 一般在 fork 出来的子进程中使用 os._exit()

一般来说 os._exit() 用于在线程中退出, sys.exit() 用于在主线程中退出。

exit() 跟 C 语言等其他语言的 exit() 应该是一样的。

os._exit() 调用 C 语言的 _exit() 函数。

builtin.exit 是一个 Quitter 对象, 这个对象的 call 方法会抛出一个 SystemExit 异常。

exit(0)和 exit(1) exit(0): 无错误退出。exit(1): 有错误退出。

退出代码是告诉解释器的(或操作系统)。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有