问题标签 [keyboardinterrupt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1082 浏览

python - Python -- 如何在控制台中创建事件循环

使用 Python 2.7,我将如何创建一个可以在其中运行我的程序的事件循环?我的想法是脚本将运行,并且事件循环将检测到某个键的按下(q在这种情况下),这将与 执行相同的操作Keyboard Interupt,只是稍微漂亮一些。

我见过这个问题,但不知道如何应用它。

此外,就像链接问题的 OP 一样,我想在没有任何外部模块/包的情况下执行此操作(如果可能)。

如果您需要,我可以发布我的程序代码,但我认为在这种情况下它不相关。

0 投票
1 回答
1013 浏览

windows - 让 ctrl+c 中断一个阻塞的系统调用

这是我正在使用的代码的精简示例:

这个想法是当按下 ctr+c 时,睡眠应该被中断,程序应该继续执行并打印“唤醒!” 或者至少给我一个堆栈跟踪,了解按下 ctrl+c 时的执行位置。

SleepEx调用可以是任何阻塞的系统调用,例如从套接字读取的阻塞。

我应该写什么ctrl_handler让通话中断?没有终止整个过程,我什么也没找到。如果这是不可能的,那么我会接受它作为答案,但我真的很想知道为什么。

这是为 Linux 编写的等效程序,使用nanosleep代替SleepEx

它完全按照我想要的方式工作。nanosleep 中的 Ctrl+c 立即中断它并通过打印“睡眠结束”继续执行。为什么 Windows 上的 SleepEx 不能进行类似的工作?

编辑第二个参数SleepEx当然应该是 TRUE。那是一个错字。

0 投票
2 回答
1818 浏览

python - 如何在 PyQt 中将按钮设置为键盘中断

通过终端运行程序时,我们可以通过按“Ctrl+c”停止程序,它将显示消息为“KeyboardInterrupt”。那么,有什么方法可以通过单击 PyQt 中的按钮来完成理智的事情。

0 投票
2 回答
139 浏览

c++ - Linux 上的 Ctrl+C 等终止信号或中断

我想运行一个进程来检查我的按键状态,与我现有的无限循环(来自 pcap 标头)平行。我正在寻找与 Windows 的 GetAsyncKeyState 非常相似的东西。

我尝试了整整一周,发现很难编写类似于 GetAsyncKeyState 的东西。所以,我使用像 ctrl+c 这样的终止信号来执行某些操作。

我想知道,是否还有其他类似的终止信号可以使用程序捕获来执行我自己的操作?

PS 我是 Linux 和 C++ 的初学者。对不起,如果我的问题很愚蠢。

0 投票
3 回答
45647 浏览

python - 带有 GPIO.setup 和 GPIO.cleanup 的 RuntimeWarnings 不适用于 KeyboardInterrupt

我的代码与树莓派一起工作时遇到问题。我刚开始使用python,所以我需要一些帮助。

这是代码:

当我运行这个错误出现在控制台中:

RuntimeWarning:此通道已在使用中,仍将继续。使用 GPIO.setwarnings(False) 禁用警告。GPIO.setup(led1, GPIO.OUT) 和:

RuntimeWarning:此通道已在使用中,仍将继续。使用 GPIO.setwarnings(False) 禁用警告。GPIO.setup(led2, GPIO.OUT)

如果我理解正确,该命令GPIO.cleanup()应重置 GPIO 端口的所有引脚并关闭 LED。

但这实际上并没有发生,其中一个导致仍然存在。

如何更改我的代码以解决此问题?

0 投票
0 回答
93 浏览

python - 如何中止 python 脚本,但留在 ipython 界面中?

有时在执行 python 脚本或执行某些命令时,需要很长时间才能完成,我想中止脚本或命令。当我使用 Ctrl-C 时,什么也没有发生。而当我使用 Ctrl-Z 时,整个 ipython 界面退出,工作区中所有保存的变量都将丢失。有什么办法可以在 ipython 中中止代码吗?

我在这里看到了类似的帖子,但没有正确回答。

我使用 Ubuntu 12.04 终端运行 ipython

0 投票
1 回答
181 浏览

powershell - 用户中断时清除会话

当用户中断powershell脚本时,有没有办法捕捉到。

我需要退出 PSSession。

我已经使用 try finally 进行了测试,但是脚本中断时 finally 没有执行Ctrl+c

0 投票
2 回答
2442 浏览

python - 在 python tkinter 中暂停一个事件

我在树莓派上使用 python 2.7 tkinter gui 来自动化一些材料测试。对于测试,必须测试多个样品,并且更换样品需要时间。我想提示文本说“请插入样本,然后按键盘上的输入”,并让功能暂停,直到按下输入。除了按回车,我还可以使用 tkinter 按钮。不使用外部库的任何想法?我尝试了一个while循环,一旦按下按钮,我就会尝试退出循环,但是由于循环正在运行,因此按钮没有注册。

示例代码(删除大量代码并留下相关内容):

0 投票
2 回答
7200 浏览

python - Ctrl-C 结束我的脚本,但它没有被 KeyboardInterrupt 异常捕获

我有一个 Python 脚本,其中包含一个读取文件并做一些事情的大循环(我正在使用几个包,如 urllib2、httplib2 或 BeautifulSoup)。

它看起来像这样:

问题是程序在我点击Ctrl+时停止,C但它没有被我的两个 KeyboardInterrupt 异常中的任何一个捕获,尽管我确信它当前处于循环中(因此至少在大 try/except 内)。

这怎么可能?起初我认为这是因为我正在使用的一个包没有正确处理异常(比如只使用“except:”),但如果是这样的话,我的脚本就不会停止。但是脚本确实停止了,它应该至少被我的两个人抓住,对吧?

我哪里错了?

提前致谢!

编辑:

通过在 try-except 之后添加一个finally:子句并在两个 try-except 块中打印回溯,它通常None在我点击Ctrl+时显示C,但我曾经设法得到这个(似乎它来自 urllib2,但我不知道是否这就是我无法捕捉键盘中断的原因):

回溯(最近一次通话最后):

0 投票
1 回答
1148 浏览

python - KeyboardInterrupts 与 python 的多处理池 imap

按照这个问题Keyboard Interrupts with python's multiprocessing Pool中的一些建议,我编写了名为 test.py 的测试代码

当我在终端运行 python test.py 时:

我仍然得到了 KeyboardInterrupt 回溯,而且我必须发送 Ctrl^C 两次才能停止脚本。我如何处理 KeyboardInterrupt 并让它不打印 tarceback 而只是使用一次 Ctrl^c 优雅地停止它。