#include <csignal> /#include <signal.h>
定义了程序执行时如何处理不同的信号。
函数:
void (*signal(int sig, void (*func)(int)))(int);
函数理解:
void function(int);
void returnFunction(int);
typedef void(*pFuncType)(int); // 定义一个函数指针类型,pFuncType是类型
// void (*pointerFunc)(int); // pointerFunc是一个指针
pFuncType pFunc1 = function;
pFuncType pFunc2 = returnFunction;
pFuncType signalFunction(int sig, pFuncType func); // 声明一个信号处理函数
signal的函数形式等同于signalFunction
参数介绍:
信号:
SIGABRT 异常中断
SIGFPE 浮点异常,参考float-point environment
SIGILL 非法指令
SIGINT 交互式信号,如中断。
SIGSEGV 非法访问存储器,如访问不存在的内存单元。
SIGTERM 发送给本程序的终止请求信号
func:
SIG_DFL:信号默认处理函数
SIG_IGN:忽视信号
返回值:
如果用户自定义的func函数执行成功则返回用户自定义的func;
如果信号被SIG_DFL或SIG_IGN处理则返回SIG_DFL或SIG_IGN;
如果信号执行失败则返回SIG_ERR。
使用:
sig_atomic_t signaled = 0;
void my_handler (int param)
{
signaled = 1;
}
void (*prev_handler)(int);
prev_handler = signal (SIGINT, my_handler);
// my_handler处理信号SIGINT
int raise (int sig);
向当前进程发送信号
定义了程序执行时如何处理不同的信号。
函数:
void (*signal(int sig, void (*func)(int)))(int);
函数理解:
void function(int);
void returnFunction(int);
typedef void(*pFuncType)(int); // 定义一个函数指针类型,pFuncType是类型
// void (*pointerFunc)(int); // pointerFunc是一个指针
pFuncType pFunc1 = function;
pFuncType pFunc2 = returnFunction;
pFuncType signalFunction(int sig, pFuncType func); // 声明一个信号处理函数
signal的函数形式等同于signalFunction
参数介绍:
信号:
SIGABRT 异常中断
SIGFPE 浮点异常,参考float-point environment
SIGILL 非法指令
SIGINT 交互式信号,如中断。
SIGSEGV 非法访问存储器,如访问不存在的内存单元。
SIGTERM 发送给本程序的终止请求信号
func:
SIG_DFL:信号默认处理函数
SIG_IGN:忽视信号
返回值:
如果用户自定义的func函数执行成功则返回用户自定义的func;
如果信号被SIG_DFL或SIG_IGN处理则返回SIG_DFL或SIG_IGN;
如果信号执行失败则返回SIG_ERR。
使用:
sig_atomic_t signaled = 0;
void my_handler (int param)
{
signaled = 1;
}
void (*prev_handler)(int);
prev_handler = signal (SIGINT, my_handler);
// my_handler处理信号SIGINT
int raise (int sig);
向当前进程发送信号