LINUX信号注册和执行

来源:互联网 发布:微盘交易源码下载 编辑:程序博客网 时间:2024/05/17 01:46
测试环境:ubuntu 16.0

编译器:       g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 (查看版本指令:g++ --version)

以下为测试代码:

 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <signal.h> 4 #include <iostream> 5 using namespace std; 6  7 //发现信号执行的方法 8 void SignalFunc(int sig_num) 9 {10     switch (sig_num)11     {12     case SIGINT:13         cout << "signal int" << endl;14         exit(1);15         break;16 17     /*添加多个响应的事件18     case SIGUSR1:19         break;20     */21     }22 }23 24 int main(int argc, char* argv[])25 {26     //注册需要监听的信号27     signal(SIGINT, SignalFunc);28 29     //构造一个阻塞点30     while (1)31     {32         cout << "waiting signal" << endl;33     }34 35     return 0;36 }

 

代码执行效果:

reacher@ubuntu:~/projects/proj$./main

waiting signal
waiting signal
waiting signal
^C
waiting signal
signal int

 

当键盘按下ctrl+c+回车 执行中断,终端响应键盘中断,调用信号注册的的函数。

 

原创粉丝点击