我有这样一段 Python 代码。
try:
while some_cond_is_still_true:
....
except KeyboardInterrupt: # Handle CTRL+C
...
虽然如果我自己运行 python 脚本可以很好地处理 KeyboardInterrupt,但如果我使用 su
作为另一个用户运行它,它就不会被处理,就像这样。
su <some_other_user> -c 'python myprogram.py <args>'
我该如何解决这个问题?
最佳答案
su 命令创建一个新的交互式 shell 并在其中执行命令。
当您使用选项 -c (--command)
时,su 命令会与命令中指示的用户创建一个新 session 。要解决此问题,请使用选项 --session-command
。
在这种情况下,命令将是这样的:
su user_name --session-command 'python myprogram.py <args>'
在这种情况下,您应该能够捕获CTRL+C 中断。
关于python - 使用 su 时 CTRL+C 未在 python 脚本中处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59249829/