当程序解析DNS时,python出口处理程序可能无法工作

当程序解析DNS时,python出口处理程序可能无法工作,python,python-3.x,dns,resolve,Python,Python 3.x,Dns,Resolve,我编写了一个程序,使用DNSPython库解析子域。 当程序运行且子域已解析时,我编写退出处理程序来处理ctrlc信号: 如果用户按下ctrlc,程序不会立即终止,在某些情况下程序会被锁定 如何解决这个问题?在Python进程上使用Ctrl-C时,它将结束。没有必要编写自己的退出处理程序,当然也没有必要尝试终止自己的进程,然后调用sys.exit。这看起来(字面上)像是过度杀戮。您试图从进程内部杀戮进程吗?这似乎没有必要。如果您在什么地方找到了这段代码,我想知道其基本原理。python中的信号处

我编写了一个程序,使用DNSPython库解析子域。
当程序运行且子域已解析时,我编写退出处理程序来处理ctrlc信号:

如果用户按下ctrlc,程序不会立即终止,在某些情况下程序会被锁定

如何解决这个问题?

在Python进程上使用Ctrl-C时,它将结束。没有必要编写自己的退出处理程序,当然也没有必要尝试终止自己的进程,然后调用
sys.exit
。这看起来(字面上)像是过度杀戮。

您试图从进程内部杀戮进程吗?这似乎没有必要。如果您在什么地方找到了这段代码,我想知道其基本原理。python中的信号处理程序仅由解释器在python操作码之间的安全点运行。如果您的程序被卡在某些C代码或不可中断的sys调用中,处理程序将不会运行,直到控制返回到man解释器循环。我使用以下代码调用我的退出处理程序:signal.signal(signal.SIGINT,exitHandler).i注释代码并运行程序..当我按下ctrl+c程序崩溃..@JesonPark:您首先需要解释编写处理程序的原因,因为键入ctrl-c时Python将退出,在这种情况下,您需要提供“崩溃”的详细信息,如果您需要更多帮助。@NedBatchelder:先生,我为网站的解析子域编写程序。.程序接受一个参数(网站地址)并打印接受表单参数的网站子域…现在假设在运行程序之后,程序打印包含100个子域的网站的10个子域…如何终止程序以防止继续解析域..@JesonPark:按ctrl-c。如果当时没有退出,则程序处于不可中断状态,无法收听信号。添加信号处理程序没有帮助,因为它不会被执行。(现在如果您使用的是子进程或线程,则可能是另一个问题)!我该怎么办??我想程序会转到另一个线程(在dns.resolver.resolver()中)。hance ctrl+c对我不起作用!
def exitHandler(signum = 0, frame = 0):
    print("Kill Process..")
    os.kill(os.getpid(), 9)
    sys.exit(0)