洛阳市建设工程评标专家网站,衡水城乡建设局网站,创建个人百度百科,成都有做网站的公司吗简介#xff1a; CSDN博客专家#xff0c;专注Android/Linux系统#xff0c;分享多mic语音方案、音视频、编解码等技术#xff0c;与大家一起成长#xff01; 优质专栏#xff1a;Audio工程师进阶系列【原创干货持续更新中……】#x1f680; 人生格言#xff1a; 人生… 简介 CSDN博客专家专注Android/Linux系统分享多mic语音方案、音视频、编解码等技术与大家一起成长 优质专栏Audio工程师进阶系列【原创干货持续更新中……】 人生格言 人生从来没有捷径只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注Android系统攻城狮 1.前言 本篇目的理解signal信号应用实例。 signal函数用于设置信号处理程序。信号是在程序执行期间由操作系统或其他进程发送给进程的一种通信机制。signal函数允许我们指定在接收到特定信号时要执行的处理程序。
signal函数的原型如下
其中signum参数表示要处理的信号的编号handler参数是一个指向信号处理程序的函数指针。
signal函数的返回值是一个指向以前信号处理程序的函数指针。如果返回值是SIG_ERR则表示设置信号处理程序失败。
2.应用实例
1v1.0 监控Ctrl C信号
#include iostream
#include stdlib.h
#include csignal
#include unistd.hvoid sigint_handler(int signal){std::cout Received SIGINT signal std::endl;// 可以在这里进行一些自定义的操作或采取适当的措施exit(0);
}int main(){//注册SIGINT信号处理函数(处理Ctrl C信号.)signal(SIGINT, sigint_handler);std::cout Press CtrlC to send SIGINT signal... std::endl;//无限循环等待SIGINT信号的发生while (true){sleep(1);}return 0;
}
2v1.0 监控Ctrl D信号
#include iostreamint main() {std::cout Press CtrlD (EOF) to end input... std::endl;while (true) {int input;std::cin input;if (std::cin.eof()) {std::cout Received EOF signal std::endl;break;}}return 0;
}
std::cin()函数读取输入流并检查std::cin.eof()我们能够正确地捕获CtrlD(SIGQUIT)信号并退出程序。