【发布时间】:2016-08-16 07:54:00
【问题描述】:
我使用 Eclipse for C/C++ Developers 版本来编写必须通过发送信号 SIGINT 来响应 Ctrl+C 单击的代码。但是,当我从控制台运行代码时,我发现它根本不响应 Ctrl+C。我禁用了 Ctrl+C 作为复制键盘映射的功能,但它仍然没有解决问题。 你知道我能做些什么来解决它吗?
代码示例:
#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
static void sig_int(int num) {
printf("\nerror\n");
}
int main (int argc, char *argv[]) { //7
sigset_t zeromask;
if (signal(SIGINT, sig_int) == SIG_ERR)
fprintf(stderr,"signal(SIGINT) error");
printf("Hello\n");
if (sigsuspend(&zeromask) != -1)
fprintf(stderr,"sigsuspend error");
}
如果您从 Linux 终端运行此代码,当您单击“Ctrl+C”时,您将获得“错误”输出。但是,从 Eclipse 控制台运行它,什么都不会发生。 Eclipse 控制台不会将 Ctrl+C 视为键盘中断。
【问题讨论】:
-
请发布一些代码,除非您说它可以在终端上运行,但不能从 ecrise 的控制台运行。
-
我编辑了我的帖子并添加了一些代码。
-
@Rei,对不起,它仍然没有帮助我。我找不到 Eclipse 的 pid。我尝试输入终端“ps”和“jobs”,但没有得到任何引用 Eclipse 的信息。
标签: c linux eclipse signals sigint