草庐IT

无法再 ctrl-c 我的 SDL 应用程序

昨天我可以,今天我不能在终端中使用ctrl-c来终止我的SDL应用程序。在调用SDL_Init之前,一切都按预期进行。之后,ctrl-c什么都不做。调用signal(SIGINT,SIG_DFL)不会改变这一点。除了Nvidia驱动程序,我没有更新任何我能想到的东西。我几个月前编译的应用程序也会出现这种情况。有什么方法可以调试正在发生的事情吗?[编辑]即使这在SDL_Init之后停止工作(尽管在gdb中正常运行):signal(SIGINT,exit);raise(SIGINT);SDL1.2.15和SDL2都发生了同样的情况(虽然过剩是可以的)。我正在运行Fedora18(x64)、

linux - 使用 ctrl c 完成程序时调用函数

我在Linux环境下工作,我有一个C++程序,我想要的是当我用ctrl+c取消程序时我希望程序执行一个函数,关闭一些文件并打印一些sutff,有什么办法吗?谢谢你。 最佳答案 signal()在某些操作系统上可能很危险,在Linux上已弃用,取而代之的是sigaction()。"signalversussigaction"这是我最近遇到的一个例子("Taptheinterruptsignal")并在我玩弄它时进行了修改。#include#include#include#includestructsigactionold_action

c - 除了 Ctrl-C 之外,我还能捕捉到什么键盘信号?

我有一个(C,Linux)应用程序,它通过关闭来处理Ctrl-CSIGINT。我想添加另一个信号处理程序,以便我可以使用另一个击键组合来“在运行时重新加载配置”。因此,我正在查看可以通过击键发送到前台进程的信号,这不会强制进程退出或挂起。还有其他的吗? 最佳答案 你可以使用ctrl+Z,SIGTSTP值=20有关更多详细信息,请参阅此link. 关于c-除了Ctrl-C之外,我还能捕捉到什么键盘信号?,我们在StackOverflow上找到一个类似的问题: h

c - 我的 shell 无法阻止 ctrl+c 自杀

我编写了自己的shell(源代码在下面列出)并将用户的默认shell设置为它。我用这个用户登录并键入ctrl-C,即使捕获到这个信号,这个shell也被终止了。但是,我直接从bash运行这个shell,它按我预期的那样工作。有什么不同。结果使用默认shell设置为我自己的shell的用户登录:BMClogin:BMClogin:narootPassword:BMC>signal=2BMClogin:直接在bash下运行:~#/tmp/systemshellBMC>signal=2BMC>signal=2BMC>signal=2BMC>源代码#include#include#includ

linux - 在 Linux 上重新映射 Win、Ctrl 和 Alt 键

问题:如何在Linux系统范围内重新映射(交换)修改键?说明:我想在我的PC上安装DebianJessie以将其与Emacs一起使用。我有一台装有Emacs的MacBook,主要使用它。以下是笔记本电脑上按键的排列方式:fnctrlaltcmd空格键cmd替代fn在我的Emacs工作流程中未使用,其他键配置如下:ctrl充当Hyperalt充当Metacmd作为Control这些配置简化了我的Emacs体验(大拇指点击Controlcmd键)并且我习惯了这种键绑定(bind)。默认alt用作Meta,而ctrl用作Control,交换键,大拇指放在Meta上我想在Linux上以同样的方

linux - Sublime text 2,ctrl+d 没有按预期工作

似乎“快速添加下一个”和“将选择扩展到单词”都映射到相同的键绑定(bind)。我不确定如何覆盖/更改“将选择扩展到单词”,因为我找不到这两个操作的当前键绑定(bind)。有谁知道这两个Action叫什么?澄清一下,假设我有以下代码块this.GRID_TOP=10;this.GRID_SPACING=10;this.GRID_HEIGHT=10;this.GRID_WIDTH=10;我想在每一行上选择“GRID”字符串。我可以使用alt+F3但这太过分了。我想选择“GRID”,然后按ctrl+D来选择后续匹配项。我的问题是它只工作一次(选择前两个),然后将两个光标都扩展到单词的末尾。由

linux - 为什么 Linux 在按下 Ctrl+C 时总是输出 "^C"?

我一直在研究Linux中的信号。我已经做了一个测试程序来捕获SIGINT。#include#include#includevoidsignal_handler(intsignal_no);intmain(){signal(SIGINT,signal_handler);for(inti=0;i虽然输出看起来像这样:I'msleeping...I'msleeping...^COops,youpressedCtrl+C!I'msleeping...I'msleeping...^COops,youpressedCtrl+C!I'msleeping...^COops,youpressedCtrl

linux - 如何终止使用 sudo 运行的进程? Ctrl+C 执行,但不杀死

在我的公司,一些命令允许使用sudo运行,例如tcpdump。其他人没有。我希望运行tcpdump一段时间,然后停止它。当我运行tcpdump时,我可以使用Ctrl+C中止它我写了一个这样的shell脚本-#!/bin/shsudotcpdump-ieth1-w~/dump.binsleep5kill-2$!这真的不行。tcpdump进程以root身份运行,当前用户为普通账号。我的问题是:有什么方法可以在bash脚本中执行相当于ctrlc的操作吗?编辑:ps:作为我公司的安全政策,我不能以root身份运行kill。 最佳答案 尝试-

python - 允许 Ctrl-C 中断 python C 扩展

我正在(自制的)基于C的python扩展中运行一些计算量大的模拟。偶尔我会弄错东西并想终止模拟。但是,Ctrl-C似乎没有任何效果(除了将^C打印到屏幕上)所以我必须使用kill或系统监视器来终止进程.据我所知,python只是等待C扩展完成,在此期间并不真正与其通信。有没有办法让它工作?更新:(针对我的具体问题)的主要答案是:1.重写代码以定期将控制权交还给调用者(回答下面的AllowingCtrl-CtointerruptapythonC-extension),或者2.使用PyErr_CheckSignals()(下面回答https://stackoverflow.com/a/33

linux - 如何让 Ctrl-Backspace 在 gnome-terminal 中删除 vim 中的单词?

我想要Ctrl-Backspace在vi​​m插入模式下删除当前单词。在xterm中,我可以通过:inoremap但是在gnome-terminal中我无法找到实现它的方法。在vim插入模式下,如果我键入control-v然后按退格键,我会在xterm中得到^H,而^?在侏儒终端。不幸的是,:inoremap在gnome-terminal中不起作用;无论如何,control-backspace只会删除一个字符。关于ASCII码:Gnome终端允许您在编辑->配置文件首选项->兼容性下更改退格字符。不幸的是,据我所知,没有任何选项有效:如果我尝试映射字符本身,则通过设置将任何字符应用于B