Python在SIGINT上从套接字中断

时间:2018-03-21 21:45:14

标签: python sockets signal-handling

我正在开发一个从套接字接收数据的程序,当发送信号时,我希望能够从接收中断。

我现在拥有的:

class Killer: 
    die = False
    def __init__(self):
        signal.signal(signal.SIGINT, self.terminate)
        signal.signal(signal.SIGTERM, self.terminate)

    def terminate(self, signum, frame):
        print ("caught " + str(signum))
        self.die = True;

sock = socket.socket()
# Generic socket setup

while (~killer.die):
    #generic data setup
    sock.receive(data)

sock.shutdown(socket.SHUT_RDWR)

当中断被捕获时,它会打印然后再返回等待。

接收信号时是否有办法摆脱接收?

1 个答案:

答案 0 :(得分:1)

自Python 3.5起,在调用(Python)信号处理程序后,中断的系统调用为automatically resumed。如果您不想这样,请在处理程序中引发异常。