永发信息网

python 判断脚本中断问题

答案:3  悬赏:70  手机版
解决时间 2021-11-10 01:59
python 判断脚本中断问题
最佳答案
通过信号量来处理,python 提供signal模块。当用户按Ctrl+C结束进程时,会执行特定代码。
信号的概念
信号(signal)--     进程之间通讯的方式,是一种软件中断。一个进程一旦接收到信号就会打断原来的程序执行流程来处理信号。
几个常用信号:
SIGINT     终止进程  中断进程  (control+c)
SIGQUIT   退出进程
SIGTERM   终止进程     软件终止信号  (默认信号)
SIGKILL   终止进程     杀死进程
SIGALRM 闹钟信号
当直接写kill PID,默认是SIGTERM
代码示例:
import time
from signal import signal, SIGINT

def ctlc(a,b):
    print('ctrk+c')
    exit(2)

signal(SIGINT, ctlc)
while True:  
    time.sleep(1)
全部回答
用信号

import signal

def handler(signum, frame):
close()

.....

signal.signal(signal.SIGINT, handler) #设置信号处理函数,当SIGINT中断时响应

使用 signal 模块 (首先你要先有 unix/linux 下信号 signal 的一些基本概念,才能理解 signal 模块,这块内容你自己去搜索吧)


参考下面的代码,函数 cb 会在程序收到 SIGINT (ctrl-c 产生,即 KeyboardInterrupt)和 SIGTERM 时调用,你应该在里面加上close。 后面那个 while True 循环模拟你那个永久写数据的代码。 这个程序就可以在收到 SIGINT SIGTERM 信号时达到你要的效果。



import signal, time

def cb(s, f):
    print 'recv signal', s
# close at here
    exit(0)



signal.signal(signal.SIGTERM, cb)
signal.signal(signal.SIGINT, cb)

print 'start'
while True:
    time.sleep(1)
print 'done'
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
佛教讲的七种能力是什么?
哪种物流和快递可以托运水产这些活类的东西,
个人征信产生呆帐已经还了3年还要多长时间消
学画画一天和一年的区别,这个比喻真的是太贴
教父2的问题.海门.罗斯为什么要杀法兰克
求郑秀文的一首歌:让岁月冲走心中那悲伤 脱
根据示范条款规定,以下哪些附加险属于特种车
直径60cm是多少寸
小明有35元钱,买一个我模型用了3元,剩下多
机械巫师角色有什么能力 机械巫师角色能力作
买电链锯导板分型号吗
dnf魔皇闪电九属强低
可贝尔的简介
爷T娘T太笼统,T们都是什么性格
什么是井下铲运车?
推荐资讯
oracle open 密码过期
西安群贤道9号为什么五证不全
89年8月9日10点和83年9月3日3点 八字分析 大
五星苏河醇酒多少钱一瓶
定西市岷县梅川邮政所地址在什么地方,想过去
学霸救学渣,礼轻情意重!!!
cmos的p管中, n-well 与 SRC反偏 对p管有什么
身在三界内不在五行中 是什么意思?
王者荣耀铭文的隐藏属性对装备限制作用具体是
这几副画能值多少钱
干嘛后车牌铁板做活动的?
有没有人可以 帮帮我的 5块10块也可以
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?