python信号_python学习笔记——信号模块signal

基于python学习笔记——多进程间通信——Linux信号基础的学习基础,进一步学习Python标准库中的signal模块。

尽管signal是python中的模块,但是主要针对UNIX平台(比如Linux,MAC OS),而Windows内核中由于对信号机制的支持不充分,所以在Windows上的Python不能发挥信号系统的功能。

signal模块负责python程序内部的信号处理;典型的操作包括信号处理函数、暂停并等待信号,以及定时发出SIGALRM等;

1 signal基本信号名

引入模块: import signal

signal.SIGHUP #连接挂断;

signal.SIGILL #非法指令;

signal.SIGINT #终止进程(ctrl+c);

signal.SIGTSTP #暂停进程(ctrl+z);

signal.SIGKILL #杀死进程(此信号不能被捕获或忽略);

signal.SIGQUIT #终端退出;

signal.SIGTERM #终止信号,软件终止信号;

signal.SIGALRM #闹钟信号,由signal.alarm()发起;

signal.SIGCONT #继续执行暂停进程;

2 常用信号处理函数

2.1 设置发送SIGALRM信号的定时器

signal.alarm(time)

参数:time为时间参数

功能:在time时间后,向进程自身发送SIGALRM信号

importsignalimporttime

signal.alarm(4)#4s后终止程序

whileTrue:

time.sleep(1)print("学习python中...")

运行

学习python中...

学习python中...

学习python中...

闹钟

当在一个程序中出现两个signal.alarm()函数时

importsignalimporttimeprint(signal.alarm(3)) #0

time.sleep(1)print(signal.alarm(4)) #2

whileTrue:

time.sleep(1)print("学习python中...")

运行

02学习python中...

学习python中...

学习python中...

闹钟

注意:在一个进程中,只能设置一个时钟,如果设置第二个则会覆盖第一个的时间,返回地一个的剩余时间,第一个闹钟返回0。

2.1 设置信号处理函数

signal.signal(sig, handler)

功能:按照handler制定的信号处理方案处理函数

参数:

sig:拟需处理的信号,处理信号只针对这一种信号起作用sig

hander:信号处理方案

在信号基础里提到,进程可以无视信号、可采取默认操作、还可自定义操作;当handler为下列函数时,将有如下操作:

SIG_IGN:信号被无视(ignore)或忽略

SIG_DFL:进程采用默认(default)行为处理

function:handler为一个函数名时,进程采用自定义函数处理

*SIGSTOP SIGKILL不能处理,只能采用

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值