我想在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',如下面的评论所示。
答案 0 :(得分:2)
您可以捕获SIGINT
并将呼叫分派给某个功能。
e.g。
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)
编辑以添加我已验证可用的代码,而非内存中的示例:)