关于SIGINT和SIG_IGN的疑问

关于SIGINT和SIG_IGN的疑问

我正在学习一门操作系统课程,由于使用的操作系统是 Linux,因此我们学习了使用SIGINT和的程序SIG_IGN

当我尝试编写我的电脑编译器中教过的代码时显示一条错误消息并且两者都无法找到。

如何安装软件包来安装这些宏?或者我应该做些什么才能让它们工作?我使用 Ubuntu 12.10

答案1

为了使用这两个信号,您需要包括signal.h,例如这个取自维基百科页面与C信号相关:

#include <signal.h>
#include <stdio.h>
#include <stdlib.h>

static void catch_function(int signo) {
    puts("Interactive attention signal caught.");
}

int main(void) {
    if (signal(SIGINT, catch_function) == SIG_ERR) {
        fputs("An error occurred while setting a signal handler.\n", stderr);
        return EXIT_FAILURE;
    }
    puts("Raising the interactive attention signal.");
    if (raise(SIGINT) != 0) {
        fputs("Error raising the signal.\n", stderr);
        return EXIT_FAILURE;
    }
    puts("Exiting.");
    return 0;
}

相关内容