python - 使用 su 时 CTRL+C 未在 python 脚本中处理

标签 python linux keyboard-events

我有这样一段 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/

相关文章:

c# - 检测用户何时打开 word 文档以及何时输入(在 c# 中)

linux - 环形振荡器设备驱动程序

python - 无效的文件错误Python?

python 2 : How do I condense like terms in a tuple?

python - 如何无异常地检查文件是否存在?

linux - 找到大文件夹并用分割压缩

c++ - 如何在 Linux 中打开包含非 Ascii 字符串的 wchar_t* 文件?

javascript - 在 KeyboardEvent 中,应使用哪个属性来确定按下哪个键?

node.js - ReadStream 跳过字节?

python - 带有单个按钮的 Django 文件上传表单