重庆网站设计公司排名,wordpress分类目录keyword,memcache wordpress,定制网站制作公司哪家好文章目录 【 1. signal 函数 】【 2. raise函数 】 信号是由操作系统传给进程的 中断#xff0c;会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上#xff0c;可以通过按 CtrlC 产生中断。有些信号不能被程序捕获#xff0c;但是下表所列信号可以在程序中捕… 文章目录 【 1. signal 函数 】【 2. raise函数 】 信号是由操作系统传给进程的 中断会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上可以通过按 CtrlC 产生中断。有些信号不能被程序捕获但是下表所列信号可以在程序中捕获并可以基于信号采取适当的动作。这些信号是定义在 C 头文件\ 中。
信号描述SIGABRT程序的异常终止如调用 abort。SIGFPE错误的算术运算比如除以零或导致溢出的操作。SIGILL检测非法指令。SIGINT接收到交互注意信号。SIGSEGV非法访问内存。SIGTERM发送到程序的终止请求。
【 1. signal 函数 】
C 信号处理库提供的 signal 函数用来捕获突发事件。 不管我们想在程序中捕获什么信号必须使用 signal 函数来注册信号并将其与信号处理程序相关联 。以下是 signal() 函数的形式
void (*signal (int sig, void (*func)(int)))(int);
/*
第一个参数是一个整数代表了信号的编号
第二个参数是一个指向信号处理函数的指针。
*/实例 使用 signal() 函数捕获 SIGINT 信号。
#include iostream
#include csignal
#include windows.husing namespace std;void signalHandler( int signum )
{cout Interrupt signal ( signum ) received.\n;// 清理并关闭// 终止程序 exit(signum); }int main ()
{// 注册信号 SIGINT 和信号处理程序signal(SIGINT, signalHandler); while(1){cout Going to sleep.... endl;Sleep(1);}return 0;
}代码被编译和执行时它会产生下列结果 按 CtrlC 来中断程序程序会捕获信号程序打印如下内容并立刻退出
Going to sleep....
Going to sleep....
Going to sleep....
Interrupt signal (2) received.【 2. raise函数 】
raise() 函数用于生成信号该函数带有一个整数信号编号作为参数函数形式如下
int raise (signal sig);
/*
sig 是要发送的信号的编号
这些信号包括SIGINT、SIGABRT、SIGFPE、SIGILL、SIGSEGV、SIGTERM、SIGHUP。
*/实例 使用 raise() 函数内部生成信号。
#include iostream
#include csignal
#include unistd.husing namespace std;void signalHandler( int signum )
{cout Interrupt signal ( signum ) received.\n;// 清理并关闭// 终止程序 exit(signum); }int main ()
{int i 0;// 注册信号 SIGINT 和信号处理程序signal(SIGINT, signalHandler); while(i){cout Going to sleep.... endl;if( i 3 ){raise( SIGINT);}sleep(1);}return 0;
}