python 判断脚本中断问题
答案:3 悬赏:70 手机版
解决时间 2021-11-10 01:59
- 提问者网友:愿为果
- 2021-11-09 15:34
python 判断脚本中断问题
最佳答案
- 五星知识达人网友:执傲
- 2021-11-09 15:49
通过信号量来处理,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)
信号的概念
信号(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)
全部回答
- 1楼网友:鱼芗
- 2021-11-09 17:23
用信号
import signal
def handler(signum, frame):
close()
.....
signal.signal(signal.SIGINT, handler) #设置信号处理函数,当SIGINT中断时响应
import signal
def handler(signum, frame):
close()
.....
signal.signal(signal.SIGINT, handler) #设置信号处理函数,当SIGINT中断时响应
- 2楼网友:酒醒三更
- 2021-11-09 16:43
使用 signal 模块 (首先你要先有 unix/linux 下信号 signal 的一些基本概念,才能理解 signal 模块,这块内容你自己去搜索吧)
参考下面的代码,函数 cb 会在程序收到 SIGINT (ctrl-c 产生,即 KeyboardInterrupt)和 SIGTERM 时调用,你应该在里面加上close。 后面那个 while True 循环模拟你那个永久写数据的代码。 这个程序就可以在收到 SIGINT SIGTERM 信号时达到你要的效果。
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'
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯