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

assembly - 需要帮助在 MS-DOS 中挂钩新的键盘中断

我正在为一个装配班做作业。

我以前设法让我的定时器中断显示并在每个滴答声中更新一个“时钟”。

我正在尝试使用这些知识来替换我的键盘中断。但即使我注释掉新键盘中断处理程序的安装,我的程序也会干扰 MS-DOS 活动(即无法运行任何可执行文件,只能使用 'dir'、'cd' 和类似命令):

由于即使我注释掉了安装也存在问题,我认为问题在于卸载或 old_key 保存。但是我不知道出了什么问题;安装和卸载代码不应该本质上类似于定时器中断的安装/卸载代码吗?

协助将不胜感激,在此先感谢您。

0 投票
2 回答
5524 浏览

r - 在 R 中使用“sink()”从文件切换到标准输出

我实现了以下过程,旨在写入一些文件并在写入完成后在每个文件的末尾打印一条消息:

我的问题是,如果我不在sink()循环的最开始添加 a ,则标准输出 ( cat(paste(filename, "done !\n"))) 上的最终写入将无效。另一方面,提早添加sink()会产生我想避免的警告:

有没有人知道 sink() 的行为方式和/或如何摆脱这些警告?

注意:我也尝试过try(sink(), silent=TRUE),但该silent选项只能防止错误...

0 投票
1 回答
472 浏览

python - 从键盘输入暂停 Python 子进程而不杀死子进程

我正在开发一个在 Python 中生成 shell 的项目,其中一个重要功能是能够暂停和后台运行正在运行的子进程。然而,我发现暂停子进程的唯一方法似乎会立即杀死它,所以我以后无法恢复它。我们小组已经尝试过除了 KeyboardInterrupt:

并使用信号:

另一个问题是,这两个都只有在按下 Ctrl-C 时才起作用,没有其他任何影响(我想这就是子进程被杀死的原因)。

0 投票
1 回答
968 浏览

python - 在扭曲的程序中中断 raw_input

我将参考这个解释和这个解决方法

所以我正在做的是:

问题是,虽然菜单被通知它必须停止,并且很快就会这样做,但它现在不能这样做,因为它被卡在了raw_input

因此,由于 twisted 正在移除默认中断处理程序,raw_input因此不会停止。我仍然需要按下它才能enter停止^C

如何在安装默认中断处理程序的情况下强制停止 raw_input,这是扭曲上下文中问题的根源(因为扭曲本身不希望被中断)

我想这个问题不仅仅与raw_input:任何花费无限时间(或超过预设限制)的函数都应该以某种方式中断。

对此有公认的扭曲模式吗?

编辑

这是完整的测试代码:

我可以以两种不同的方式运行。

正常方式:

按下^C立即停止程序:

正如预期的那样。

扭曲方式:

压制^C会产生:

askUser实际上并没有被打断:我仍然需要按enterforraw_input才能完成。

0 投票
2 回答
217850 浏览

python - 在程序关闭期间在 Python 中捕获 KeyboardInterrupt

我正在用 Python 编写一个命令行实用程序,因为它是生产代码,所以应该能够干净地关闭而不会将一堆东西(错误代码、堆栈跟踪等)转储到屏幕上。这意味着我需要捕捉键盘中断。

我尝试过使用 try catch 块,例如:

并捕捉信号本身(如本文所述):

这两种方法在正常操作期间似乎都工作得很好。但是,如果在应用程序结束时清理代码期间出现中断,Python 似乎总是在屏幕上打印一些东西。捕捉中断给出

而处理信号会给出

或者

这些错误不仅丑陋,而且帮助不大(尤其是对于没有源代码的最终用户)!

这个应用程序的清理代码相当大,所以这个问题很有可能会被真实用户遇到。有什么方法可以捕获或阻止此输出,还是我必须处理的事情?

0 投票
0 回答
516 浏览

error-handling - Common Lisp 键盘中断

是否有在 Common Lisp 中捕获键盘中断的交叉实现(至少 SBCL、CCL、Lispworks 和 CLISP)、跨平台(Linux/Windows/OS X)方式?或者更具体地说,让键盘中断?

我在一个文件中有这个代码片段

其目的是处理错误,但让用户使用键盘中断(在 Linux 上的 SBCL 中表现为simple-error)来中断程序。但是,这似乎不起作用CCL即使主代码没有引发错误,该错误子句似乎也会触发)。

在这种情况下正确的方法是什么?

0 投票
3 回答
2098 浏览

python - Python Threading - 管理线程终止和主线程

在您继续阅读之前,请知道我是 Python 新手,并且对线程非常陌生,所以如果我误解了线程的工作原理或犯了新手错误,请原谅我:P

我的目标的简短描述:

  1. 主线程 (a) 做了一些事情(例如打印“开始!”)
  2. 主线程产生一个新线程 (b),它首先打印“线程 B 已启动”,然后永远打印 x+1 (1, 2, 3 ...)
  3. 主线程打印“哇!”
  4. 然后到达主线程的末尾,它自己终止,然后切换到线程 b 使 b 成为主线程
  5. 程序现在将线程 b 作为主线程运行,所以只是永远打印 x+1 并且 a 已被遗忘且不再相关
  6. Ctrl+C 将终止线程 b 并有效地终止整个程序,因为线程 a 不再存在

这是我到目前为止所拥有的(基础知识):

要求是:

  • 我根本不想在“用户代码”标记下方进行太多修改。我当然不想将它包装在一个类、一个函数或它自己的线程中
  • 在任何时候按 Ctrl+C 都应该终止整个程序,并且没有线程在运行(使用类似的东西:在用户代码中很好except
    KeyboardInterrupt: os._exit(1))
  • 线程 a可能会继续运行,而不是使线程 b 成为主线程,但在这种情况下,我不希望代码处理 Ctrl+C 终止用户代码部分内的整个程序

这个例子不是我的实际目标,只是我遇到的问题的简化版本。我正在尝试制作一个 IRC 框架,用户可以在其中导入它并非常简单地使用 API,而不会将他们自己的代码与线程和中断等搞乱。这就是为什么用户代码尽可能干净是很重要的。

该框架将允许用户创建一个永久运行的 IRC 机器人,在听命令的同时允许用户添加自己的命令。如果您有兴趣,Github 链接在这里(这是非常 WIP atm)。

0 投票
2 回答
653 浏览

python - Python:Tornado ioloop 在 KeyboardInterrupt 上没有异常被杀死

当我在以下程序中^C阻止龙卷风时按下时,Python 会立即退出,并且不会引发 KeyboardInterrupt(或任何其他异常)。ioloop.start()发生了什么事,我怎么能抓住^C

输出:

预期输出:

我在跑:

  • 视窗 8.0 x64,
  • Python 2.7.6(默认,2013 年 11 月 10 日,19:24:18)[MSC v.1500 32 位(英特尔)] 在 win32 上
  • 龙卷风==3.2
0 投票
0 回答
349 浏览

python - 如何忽略模块中的keyboardInterrupt Exception并在winpexpet中进行更高级别的处理?

大家好,我想在win7 x64的python控制台程序中禁用键盘ctrl-c。我的脚本使用winpexect来运行一个运行几个小时的外部程序。我已经试过了

它在我遇到 winpexpect 部分之前工作,如果 winpexpect 产生的进程已经开始,那么我按 ctrl-c 。发生以下错误。

我检查了winpexpect源,它在扫描程序的输出时捕获了这个异常,有没有办法告诉它忽略这个异常并在我的主python脚本中处理它?(必须更改 winpexpect 代码?)

所以换句话说,问题可能是“如何忽略模块中捕获的异常并重新引发它,以便外部代码可以稍后捕获它?”

0 投票
1 回答
1629 浏览

python - pyzmq Tornado ioloop:如何优雅地处理 KeyboardInterrupt?

我可以在我的 pyzmq 事件循环中捕获一个 KeyboardInterrupt:

但这只会突然停止 ioloop。我想在清理后手动检测 KeyboardInterrupt 并关闭 ioloop。我怎样才能做到这一点?