在Python中用条件出口捕获SIGINT

2024-04-20 07:21:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Python脚本中捕获SIGINT信号。但是,只有当用户在发送SIGINT后输入正确的密码时,脚本才会终止。这可以用Python实现吗?一些示例代码说明了这个问题:

import signal

def signal_handler(signal, frame):
    password = raw_input("Enter password: ")
    if password != "secret":
        print("Wrong password!")
        # TODO don't let process end
    else:
        print("Password correct. Exiting now.")

signal.signal(signal.SIGINT, signal_handler)

编辑:将变量“pass”更改为“password”,如下面的注释所示。你知道吗


Tags: 代码用户import脚本密码示例rawsignal
1条回答
网友
1楼 · 发布于 2024-04-20 07:21:29

您可以捕获SIGINT并将调用分派给函数。你知道吗

例如

import signal
import sys
import time

def confirm_password(signal, frame, secret="shhh"):
  password = raw_input("Enter password: ")

  if password == secret:
      sys.exit(0)
  else:
      print("Password incorrect.  Refusing to exit.")

while True:
    signal.signal(signal.SIGINT, confirm_password)
    time.sleep(1000)

编辑以添加我已验证有效的代码,而不是内存中的示例:)

相关问题 更多 >