问题标签 [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.
python - 在 Ctrl-C 上删除 Python 中的回溯
Ctrl当你点击+时,有没有办法阻止回溯出现c,即KeyboardInterrupt
在 Python 脚本中引发?
python - 在慢速系统调用中处理 SIGINT
我对 Python 很陌生,所以如果这个问题非常基本,请原谅我。
我正在尝试在使用选择模块从套接字接受数据时处理键盘中断。所以,我有一个 select.select() 函数调用来等待来自套接字的数据,然后将其输出到控制台。
按下 CTRL_C 时,似乎有时会出现 select.error,有时会出现 exceptions.IOError 异常。两种异常对应的错误代码均为 4。
有一些代码在调用堆栈中更深地处理 KeyboardInterrupt 异常,因此当我在接受套接字连接的函数中获得 SIGINT 时,我只想重新引发 KeyboardInterrupt 异常。我还想捕获与连接相关的异常。
检查异常的错误代码是否安全,如果它是 4 则引发 KeyboardInterrupt?这会影响我捕获与连接相关的异常的能力吗?有没有关于错误代码的好资源?
谢谢!
c - 如何在不需要按 RET 的情况下要求输入 - C、Linux OS 中的键盘中断
我已经阅读了很多关于我要问的内容,但我发现最接近的是使用 ncurses 库。我正在做的是一个简单的 http 客户端,它将监视一些远程文件夹以检查其文件是否已更改或是否有新文件。此外,它必须检查一些命令的标准输入,所以,我打算使用父进程来监控标准输入和工作进程来监控远程目录。我想使用键盘中断之类的东西。就像安装一个信号处理程序来按下键盘一样,所以用户不必在每个命令后按 enter。
到目前为止,ncurses 可以满足我的需要,但我无法在 stdout 上打印东西,而是在 stdscr 中打印。问题是这个项目是大学的作业,很可能通过读取 mi 程序标准输出的脚本来检查......
那么,有什么建议吗?
相关的代码是:
当我运行我的程序时,如果我将输出重定向到一个文件,我会得到一个空文件
谢谢你的帮助!!!=)
unix - Ctrl-C 和 SIGINT 有什么区别?
我一直在调试一个 Python 程序,该程序在收到KeyboardInterrupt
异常后会出现段错误。这通常是通过Ctrl+C从外壳按下来完成的。为了测试特定的代码更改是否修复了这个错误,我有一个小的 shell 脚本,它SIGINT
在启动后随机发送给程序。我遇到的问题是发送Ctrl+C似乎对程序的影响与发送信号不同SIGINT
,因此不会导致错误出现,所以我很想知道这两个动作之间有什么区别。
该程序根本不会捕获任何键盘操作,只是一个带有一些线程/进程的 python 程序。它不安装信号处理程序(尽管 Python 会),并stty -a
提供intr = ^C
. 我怀疑它可能是Ctrl+C发送SIGINT
到所有子进程/线程,而kill -INT
只发送到主进程,但这就是我的怀疑。
这是发送kill -INT
.
python - python退出无限while循环,键盘中断异常
按下 Ctrl+C 时,我的 while 循环不会退出。它似乎忽略了我的 KeyboardInterrupt 异常。循环部分如下所示:
同样,我不确定问题出在哪里,但我的终端甚至从不打印我在异常中遇到的两个打印警报。有人可以帮我解决这个问题吗?
python - 为什么我的线程/多处理 python 脚本没有正确退出?
我有一个服务器脚本,我需要能够干净地关闭它。在测试通常的try..except
陈述时,我意识到这Ctrl-C
不是通常的方式。通常我会像这样包装长时间运行的任务
所以任务可以干净地关闭Ctrl-C
。我以前从未遇到过任何问题,但不知何故,当我遇到Ctrl-C
这个特定脚本运行时,脚本只是退出而没有捕获Ctrl-C
.
初始版本是使用Process
from实现的multiprocessing
。Thread
我使用from重写了脚本threading
,但同样的问题在那里。我以前用过threading
很多次,但我是multiprocessing
图书馆的新手。无论哪种方式,我以前从未经历过这种Ctrl-C
行为。
通常我总是实现哨兵等以有序的方式关闭Queues
和实例,但是这个脚本只是退出而没有任何响应。Thread
最后,我也尝试过signal.SIGINT
像这样覆盖
这里Ctrl+C
实际上被捕获了,但是处理程序没有执行,它从不打印任何东西。
除了threading
/multiprocessing
方面,部分脚本还包含C++
SWIG
对象。我不知道这是否与它有关。我在 OS X Lion 上运行 Python 2.7.2。
所以,有几个问题:
- 这里发生了什么?
- 我该如何调试呢?
- 为了了解根本原因,我需要学习什么?
请注意:脚本的内部是专有的,所以我不能给出代码示例。然而,我非常愿意接收指针,所以我可以自己调试它。我有足够的经验,能够弄清楚是否有人能指出我正确的方向。
编辑:我开始注释掉导入等,看看是什么导致了奇怪的行为,我把它缩小到一个C++ SWIG
库的导入。有什么想法为什么要导入C++ SWIG
库“窃取” Ctrl-C
?然而,我不是有罪图书馆的作者,我的 SWIG 经验有限,所以真的不知道从哪里开始......
编辑 2:我刚刚在 Windows 机器上尝试了相同的脚本,并且在 Windows 7 中Ctrl-C
按预期捕获。我不会真的去打扰 OS X 部分,无论如何脚本都会在 Windows 环境中运行。
python - tkinter 键盘中断在 tkinter 帧被提升之前不会被处理
我有一个用 python+tkinter 编写的 GUI 应用程序。在我的工作流程中,我通常从命令行启动 gui,在 gui 中做一些事情,然后我发现自己导航到其他终端窗口做一些工作。不可避免地,我想在某个时候关闭 GUI,出于习惯,我经常只是导航到启动 GUI 的终端并发送 KeyboardInterrupt (Ctrl-c)。但是,直到我在窗口管理器中启动 GUI 窗口后才会收到此中断。有谁知道为什么会这样?如果 gui 是在单个函数中启动的,是否有一个简单的解决方法——multiprocessing
也许?
c - 在 C 中完成的 IDT 不起作用
我无法让 IDT 工作,因为我的中断例程没有被调用,尤其是当我按下键盘上的一个键时与键盘相关的例程。我正在传递 IDT 表的特殊 48 位指针地址。我正在这样做
我也不知道至少 GDT 是否在工作。
1)我应该怎么做才能让我的 IDT 工作。我也看过一些教程,但没有帮助 2) 我如何验证 GDT 是否正常工作?
提前致谢。
编辑:我正在为我自己的操作系统做这个。我怀疑我的汇编程序是否能够正确接收指针的地址。所以我也尝试使用内联汇编来做lidt,但没有帮助。我不知道出了什么问题。任何线索,想法?
}
}
operating-system - 如何验证 GDT 是否设置正确?
我的操作系统的 IDT 和 GDT 不能作为一个整体工作。我不知道其中哪一个设置不正确。那么我可以验证 GDT 是否设置正确,以便我能够找出问题所在。
我在 C 中这样做。
python - 如何在使用 multiprocessing.Pool #python 时在 KeyboardInterrupt 上停止执行
可能重复:
键盘中断与 python 的多处理池
Python 的多处理模块有一个叫做 Pool http://docs.python.org/library/multiprocessing.html#module-multiprocessing.pool
当一个进程池正在运行时,我无法让脚本使用 KeyboardInterrupt 终止,即 Ctrl + c。池产生新进程,唯一退出的方法是 ctrl + z 然后手动杀死它们。
这是我尝试对其进行测试的脚本:
我的主脚本尝试做一些比 time.sleep() 更耗时的事情,每次我尝试测试运行它时,我都必须等待它完成或通过首先找到它的进程的 ID 手动终止它产生。请提出解决方法。