MST

星途 面试题库

面试题:C++ 信号处理函数之基础应用

在C++中,简述如何使用`signal`函数来处理`SIGINT`信号(通常由用户按Ctrl+C产生),请编写一段简单代码示例,要求在捕获到`SIGINT`信号时输出一条自定义的提示信息。
23.6万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

在C++中,使用signal函数处理SIGINT信号的步骤如下:

  1. 定义一个信号处理函数,该函数接收一个int类型的参数,表示接收到的信号。
  2. 使用signal函数注册这个信号处理函数,将其与SIGINT信号关联起来。

以下是代码示例:

#include <iostream>
#include <csignal>

// 信号处理函数
void signalHandler(int signum) {
    std::cout << "Caught SIGINT. Program will now exit." << std::endl;
    // 可以在这里添加清理代码等
    exit(signum);
}

int main() {
    // 注册信号处理函数
    std::signal(SIGINT, signalHandler);

    std::cout << "Program is running. Press Ctrl+C to exit." << std::endl;

    // 模拟程序运行
    while (true);

    return 0;
}

在上述代码中:

  1. signalHandler函数是自定义的信号处理函数,当接收到SIGINT信号时,它会输出一条提示信息,并调用exit函数终止程序。
  2. main函数中,通过std::signal(SIGINT, signalHandler)signalHandler函数注册为SIGINT信号的处理函数。
  3. 程序进入一个无限循环while (true);来模拟程序持续运行,以便用户可以通过按Ctrl+C触发SIGINT信号。