linux ctrl c 子进程,使用os.kill将SIGINT发送到Python子进程,就像按Ctrl+C一样

在windows上使用python 3.4。

我正在尝试终止一个模拟按Ctrl+C(在linux上为Ctrl+D)的人的子进程。

目标是捕获键盘中断(SIGINT),并释放资源。但如果SIGINT不是来自键盘,则似乎不会抛出异常。这就是为什么我创建了一个处理程序,但该进程似乎根本不运行该处理程序。。。import multiprocessing

import time

import signal

import signal

import os

import sys

def handler(signal, frame):

print("handler!!!")

sys.exit(10)

def worker():

p = multiprocessing.current_process()

try:

signal.signal(signal.SIGINT,handler)

print("[PID:{}] acquiring resources".format(p.pid))

while(True):

#working...

time.sleep(0.5)

except (keyboardInterrupt, SystemExit):

pass

finally:

print("[PID:{}] releasing resources".format(p.pid))

if __name__ == "__main__":

lst = []

for i in range(1):

p = multiprocessing.Process(target=worker)

p.start()

lst.append(p)

time.sleep(3)

for p in lst:

os.kill(p.pid,signal.SIGINT)

p.join()

print(p)

print(p.exitcode)

print("joined all processes")

下面是输出的示例:C:\Users\Rui>python test.py

[PID:16524] acquiring resources

2

joined all processes我做错什么了?

我应该使用子流程模块吗?

我还可以尝试其他什么方法来中断进程执行?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值