MST

星途 面试题库

面试题:C语言中信号处理函数的基本结构

请描述在C语言中,信号处理函数的基本结构是怎样的?并举例说明如何为SIGINT信号(通常由Ctrl+C触发)编写一个简单的信号处理函数,该函数只需在控制台打印一条信息表明接收到了该信号。
38.2万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 信号处理函数基本结构
    • 在C语言中,信号处理函数的基本结构通常如下:
    void signal_handler(int signum) {
        // 处理信号的代码
    }
    
    • 其中,int signum是传递给信号处理函数的参数,它标识了接收到的信号类型。在信号处理函数内部,可以编写针对特定信号的处理逻辑。
  2. 为SIGINT信号编写简单信号处理函数示例
    #include <stdio.h>
    #include <signal.h>
    
    // 信号处理函数
    void sigint_handler(int signum) {
        printf("Received SIGINT signal.\n");
    }
    
    int main() {
        // 设置SIGINT信号的处理函数
        signal(SIGINT, sigint_handler);
    
        printf("Press Ctrl + C to send SIGINT signal.\n");
        while(1);
    
        return 0;
    }
    
    • 在上述代码中:
      • 首先定义了sigint_handler函数作为SIGINT信号的处理函数,在该函数中,只是简单地在控制台打印一条信息表明接收到了SIGINT信号。
      • main函数中,使用signal函数将sigint_handler函数注册为SIGINT信号的处理函数。
      • 然后通过一个无限循环while(1)使程序保持运行状态,以便可以接收SIGINT信号(通过按下Ctrl + C触发)。