面试题答案
一键面试在C++中,使用signal
函数处理SIGINT
信号的步骤如下:
- 定义一个信号处理函数,该函数接收一个
int
类型的参数,表示接收到的信号。 - 使用
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;
}
在上述代码中:
signalHandler
函数是自定义的信号处理函数,当接收到SIGINT
信号时,它会输出一条提示信息,并调用exit
函数终止程序。- 在
main
函数中,通过std::signal(SIGINT, signalHandler)
将signalHandler
函数注册为SIGINT
信号的处理函数。 - 程序进入一个无限循环
while (true);
来模拟程序持续运行,以便用户可以通过按Ctrl+C触发SIGINT
信号。