gpt4 book ai didi

python - 在执行Python脚本时捕获键盘中断

转载 作者:太空宇宙 更新时间:2023-11-03 18:52:03 25 4
gpt4 key购买 nike

我正在使用临时文件和子进程在 Python 中执行 bash 脚本,如下所示:

 with tempfile.NamedTemporaryFile() as scriptfile:
scriptfile.write(teststr)
scriptfile.flush()
subprocess.call(['/bin/bash', scriptfile.name])

这里,teststr 包含整个 bash 脚本。我的问题是,一旦它开始执行,它就不会像 Ctrl+c 和 ctrl+z 那样捕获键盘中断。

一旦脚本开始执行,是否有办法中断它的执行?

最佳答案

我假设问题是Python父进程从Ctrl+C接收到SIGINT并因未处理的异常而退出,但子进程忽略信号并继续运行。这是我能够重现的唯一场景。实际问题可能有所不同。使用 SIGKILL 显式捕获异常并终止子进程可能会起作用。

而不是subprocess.call:

proc = subprocess.Popen(['/bin/bash', scriptfile.name])
try:
proc.wait()
except:
proc.kill()
raise

关于python - 在执行Python脚本时捕获键盘中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18124939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com