问题标签 [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 投票
2 回答
6677 浏览

python - Python 中何时引发 KeyboardInterrupt?

所有文档告诉我们的是,

当用户按下中断键(通常是Control-CDelete)时引发。在执行期间,会定期检查中断。

但是从代码的角度来看,我什么时候可以看到这个异常?它是否在语句执行期间发生?仅在语句之间?它可以发生在表达式的中间吗?

例如:

这段代码会在适当的时机泄漏KeyboardInterrupt吗?还是在某些语句或表达式的执行过程中引发?

0 投票
1 回答
871 浏览

python - scapy 发送数据包直到 ctrl+c 不起作用

首先我尝试运行这个:

我发送了 9 个数据包然后停止。我希望它一直运行,直到我按 ctrl+c。我有一个["192.168.1.7","192.168.1.12","192.168.1.32","192.168.1.223"] 我尝试运行的 ip 列表:

它仍然发送 9 个数据包并停止。在按下 ctrl+C 之前,我想知道如何发送数据包。

0 投票
2 回答
7381 浏览

python - 使用原始输入捕获键盘中断

我有一些 python 代码可以尝试让 raw_input 捕获键盘中断。如果我在这个函数中运行代码,它工作得很好。但是如果我在我的程序中运行它,打印语句永远不会发出,表明键盘中断没有被捕获。该程序尝试退出并失败,直到升级到 SIGKILL,这当然可以正常工作。我的猜测是在其他地方捕获了键盘中断,从而完全阻止了异常运行。我的问题是,这样的中断可能发生在哪里,我怎样才能防止它阻塞这个中断。我的计划是在程序捕获键盘中断和杀死自己之间添加一点延迟,以便在这里给异常一个时间来捕获。

任何想法表示赞赏

谢谢!

0 投票
1 回答
8238 浏览

python - Selenium:在不关闭浏览器的情况下退出 Python 脚本

我使用以下内容来处理使用Ctrl+C终止正在运行的 Python 脚本的情况。

但是,这也会终止我的Selenium WebDriver浏览器。

有没有办法终止脚本并使浏览器保持活动状态,以便我可以继续使用它?

我通常做的是通过Ctrl+暂停脚本Z。不幸的是,这通常会导致浏览器冻结而不响应。

0 投票
2 回答
757 浏览

python - 无论如何,最终是否确保某些代码以原子方式运行?

假设我要编写一个 Python 脚本来捕获KeyboardInterrupt异常,以便用户使用Ctrl+C安全地终止

但是,我不能将所有关键操作(如文件写入)放入catch块中,因为它依赖于局部变量并确保后续Ctrl+C无论如何都不会破坏它。

使用带有空 ( pass)try部分的 try-catch 块和该部分内的所有代码finally将此片段定义为可能不会在中途中断的“原子、中断安全代码”是否可行并且是一种好习惯?

例子:

在此示例中,我不关心当前生成的数据字符串,即创建可能会中断并且不会触发写入。但是一旦开始写入,就必须完成,这就是我要确保的全部。此外,如果在 finally 子句中执行写入时发生异常(或 KeyboardInterrupt)会发生什么?

0 投票
2 回答
2676 浏览

python - python multiprocessing BaseManager注册类在Ctrl-C后立即失去连接

我遇到了一些我怀疑是我的 python 程序无法正确处理的问题,我的程序无法在按下 Ctrl-C 后立即调用 BaseManager 的注册类的方法,甚至其他进程实现为继承的类从 multiprocessing.Process 受到影响。我有一些我想从 Ctrl-C 后无法正确执行的进程调用的方法。

例如下面的代码不能在 Ctrl-C 之后调用 TestClass 的 mt 实例。

你有什么建议吗?我的代码中是否有任何解决方法或问题?

提前致谢。

0 投票
1 回答
1932 浏览

assembly - 汇编 8086 监听键盘中断

我有与此完全相同的问题:在绘图时听键盘

但是第一个答案(已接受)只听键盘一次。那么如何修改我的代码,以便我可以不止一次地听键盘中断。

这是我的代码:

0 投票
2 回答
49438 浏览

python-3.x - Python 3 键盘中断错误

我注意到,在任何 python 3 程序上,无论它多么基本,如果按 CTRL c,它都会使程序崩溃,例如:

如果您按 CTRL c 错误将是 KeyboardInterrupt 是否有阻止它使程序崩溃的方法?

我想这样做的原因是因为我喜欢让我的程序防错,并且每当我想将某些内容粘贴到输入中并且我不小心按了 CTRL c 时,我必须再次通过我的程序......这很烦人。

0 投票
2 回答
1148 浏览

python - Python 异常处理——返回一行,继续

我做了很多 Project Euler 编码问题,Python 是我的首选语言。很多程序通常需要很长时间才能完成,所以我正在努力实现一些有助于提供有关程序状态的诊断信息的东西:当KeyboardInterrupt发生时,我希望能够打印程序运行了多长时间以及一些信息帮助我弄清楚可能还需要多长时间。

这个问题是——KeyboardInterrupt当你点击时Ctrl-C,我仍然在退出程序……我认为这与这段代码的结构有很大关系,或者希望在 Python 中我还没有找到一些东西.

KeyboardInterrupt我希望我的代码在被捕获后立即在同一行恢复。

这是此代码的示例:

我希望有人理解这样做的目的,并且可以帮助我找到一种方法来做到这一点,或者解决这种从正在运行的代码中调用中断的丑陋方式。

0 投票
2 回答
1539 浏览

python - 如果在等待`read -s`时中断,在子进程中运行bash会破坏tty的标准输出?

正如@Bakuriu 在评论中指出的那样,这与BASH 中的问题基本相同:输入期间的 Ctrl+C 会中断当前终端 但是,我只能在 bash 作为另一个可执行文件的子进程运行时重现该问题,而不是直接从 bash ,它似乎可以很好地处理终端清理。我很想知道为什么 bash 在这方面似乎被打破了。

我有一个 Python 脚本,用于记录由该脚本启动的子进程的输出。如果子进程恰好是一个 bash 脚本,该脚本在某些时候通过调用read -s内置函数(-s用于防止输入字符回显的键)读取用户输入,并且用户中断脚本(即通过 Ctrl-C),然后 bash 无法将输出恢复到 tty,即使它继续接受输入。

我将其缩减为一个简单的示例:

运行./test.py后它将等待一些输入。如果您键入一些输入并按 Enter,则脚本会按预期返回并回显您的输入,并且没有问题。但是,如果您立即按下“Ctrl-C”,Python 会显示 的回溯KeyboardInterrupt,然后返回到 bash 提示符。但是,您键入的任何内容都不会显示在终端上。但是,键入reset<enter>成功会重置终端。

我不知道这里到底发生了什么。

更新:我也设法在没有 Python 的情况下重现了这一点。我试图在 strace 中运行 bash 以查看是否可以收集正在发生的任何事情。使用以下 bash 脚本:

运行strace ./read.sh并立即按 Ctrl-C 会产生:

PID 25487 在哪里read.sh。这使终端处于相同的损坏状态。但是,strace -I1 ./read.sh只需中断该./read.sh过程并返回到正常的、未损坏的终端。