Python中的signal模块处理OS级别的信号。例如Ctrl+C会进程发送信号。

Linux上查看信号的方法:

[appadmin@BJLTPGPLM1007T ~]$ kill -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

[appadmin@BJLTPGPLM1007T ~]$

Python中要捕获信号,需要signal包来处理。

几个常用信号:

SIGINT     终止进程  中断进程  (control+c)

SIGTERM   终止进程     软件终止信号

SIGKILL   终止进程     杀死进程

SIGALRM 闹钟信号

进程结束信号 SIGTERM和SIGKILL的区别

SIGTERM比较友好,进程能捕捉这个信号,根据您的需要来关闭程序。在关闭程序之前,您可以结束打开的记录文件和完成正在做的任务。在某些情况下,假如进程正在进行作业而且不能中断,那么进程可以忽略这个SIGTERM信号。

对于SIGKILL信号,进程是不能忽略的。这是一个 “我不管您在做什么,立刻停止”的信号。假如您发送SIGKILL信号给进程,Linux就将进程停止在那里。

发送信号一般有两种原因:

1(被动式)  内核检测到一个系统事件.例如子进程退出会像父进程发送SIGCHLD信号.键盘按下control+c会发送SIGINT信号

2(主动式)  通过系统调用kill来向指定进程发送信号

绑定信号,这里以Ctrl+C举例,它会向进程发出中断信号。

import signal

def quit_signal_handler(signum,frame):

pass

signal.signal(signal.SIGINT,quit_signal_handler)

关于Ctrl+C,实际工作中遇到一个问题,与thread/threading有关。

线程实现的两种方式: thread.start_new_thread和threading.Thread(target=xxx,args=(xxx)).start()。

做Ctrl+C操作时,如果子线程使用第二种方法发起,那么如果子线程不结束,Ctrl+C中无论是做sys.exit或者os._exit操作,应用都无法退出,而使用第一种方法,则可以结束。

python signal模块作用_Python中的signal模块和Ctrl+C操作相关推荐

  1. python 闭包的作用_python中对闭包的理解

    运行环境声明:本人的代码在sublime text 3中写的,可以Ctrl+b运行.python版本是python3.6.如果您直接运行的,请自觉加入if __name__ == '__main__' ...

  2. python pyc文件作用_Python中pyc文件的用途

    什么是pyc文件 pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的 ...

  3. python matplotlib模块教程_Python中的Matplotlib模块入门教程

    1 关于 Matplotlib 模块 Matplotlib 是一个由 John Hunter 等开发的,用以绘制二维图形的 Python 模块.它利用了 Python 下的数值计算模块 Numeric ...

  4. pythonmathcot函数_math库是python语言的数学模块吗_Python中的数学模块:Math和Cmath

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 当我们在日常生活中编写程序时,我们通常遇到需要使用数学来完成任务的情况.像其他编程语言一样,Python提 ...

  5. python斜杠作用_Python中正反斜杠(‘/’和‘\’)的意义与用法

    刚刚在学习些测试报告的时候,出现一个路径的问题,找了很久的原因,竟然是少了一个反斜杠引起的,在此顺便记录一下正反斜杠的作用. 在Python中,记录路径时有以下几种写法,如:(大家都知道\n是换行的意 ...

  6. python数学库函数包括求最大公约数函数吗_pythonmathcot函数_math库是python语言的数学模块吗_Python中的数学模块:...

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 当我们在日常生活中编写程序时,我们通常遇到需要使用数学来完成任务的情况.像其他编程语言一样,Python提 ...

  7. python中括号的作用_python中中括号

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 在python语言中最常见的括号有三种,分别是:小括号().中括号:代表list ...

  8. python异常处理的作用_Python 中的异常处理方式

    封面图片来源:沙沙野 异常处理什么是异常处理?Python 解释器检测到错误就会触发异常,或者程序员自己触发异常 程序中编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关) ...

  9. python变量的作用_Python中的变量

    Python中的变量是用来表示一个值的标识符.变量代表了计算机内存中的一个地址.变量允许在程序中访问其他对象,调用函数或执行其他运算. 1.变量命名规则 变量是Python中的标识符,它应该遵循标识符 ...

最新文章

  1. 密切值matlab程序,密切值法
  2. Kotlin的Reified类型:怎样在函数内使用这一类型(KAD 14)
  3. Javascript基本概念之数据类型
  4. 【浅谈数据结构】《数据结构》Data Structure
  5. JAVA中Explain注解用法,mysql之explain详解(分析索引最佳使用)
  6. python cx_oracle配置_python连接oracle的模块cx_Oracle安装和配置
  7. 小程序tab切换效果
  8. Day4 MySql触发器视图索引以及设计优化
  9. 查找包含特定值的数组的文档
  10. linq to sql 行转列_n套SQL面试题--行转列、留存、日活等
  11. 给大家推荐一个经典的ping工具-MTR
  12. 计算机房设计规范2008,电子信息系统机房设计规范(GB50174-2008)(下)
  13. 一款发帖软件的逆向分析(C#)
  14. python urlencode函数_Python urlencode和unquote函数使用实例解析
  15. 0/0型极限等于多少_两个重要极限的一点理解(下)
  16. java批处理查询_java 实现批量查询
  17. 前后端分离使用Spring Boot + el-upload 完成图片上传
  18. 怎么把不能编辑的qlv转换成mp4
  19. java-求指定数组中指定个数的排列组合
  20. postgresql创建数据库

热门文章

  1. 【Qt】动态刷新lcdNumber显示的值
  2. 精彩回顾:CACTER邮件数据防泄露EDLP亮相2022世界互联网大会
  3. 2010水瓶座年运势
  4. 教你快速制作一个简单的网页
  5. 固态硬盘比机械硬盘快的原因(科普篇)
  6. 面试官:说说你对双向绑定的理解?
  7. NBA篮球经典动画gif系列连载之三
  8. 年底不要慌,这个EXCEL模板帮你打赢Q4收官战
  9. 使用matplotlib绘制高级图表8
  10. 集合,ArrayList,LinkedList,HashMap,LinkedHashMap,ConcurremtHashMap分别的总结,volatile 关键字的使用