MST

星途 面试题库

面试题:C语言中Linux信号处理之异步通知基础

在Linux环境下用C语言编程,假设你要设置一个信号处理函数来处理SIGALRM信号以实现异步通知,描述实现步骤并写出关键代码片段。
47.2万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 实现步骤

    • 步骤一:包含必要的头文件
      • 需包含<signal.h>用于信号处理相关函数,<unistd.h>用于alarm函数等。
    • 步骤二:定义信号处理函数
      • 定义一个函数,该函数的参数为int类型,用于接收信号编号。在函数内编写处理信号的逻辑,比如打印一条信息表示接收到了信号。
    • 步骤三:设置信号处理函数
      • 使用signal函数来设置信号SIGALRM的处理函数。
    • 步骤四:触发信号
      • 使用alarm函数来设置一个定时器,当定时器到期时,会发送SIGALRM信号。
  2. 关键代码片段

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

// 信号处理函数
void sigalrm_handler(int signum) {
    printf("Received SIGALRM signal.\n");
}

int main() {
    // 设置SIGALRM信号的处理函数
    signal(SIGALRM, sigalrm_handler);

    // 设置定时器,5秒后触发SIGALRM信号
    alarm(5);

    printf("Waiting for SIGALRM signal...\n");
    while (1) {
        // 等待信号,这里可以做其他事情
        sleep(1);
    }

    return 0;
}