《朱老师物联网大讲堂》学习笔记
学习地址:www.zhulaoshi.org
signal函数,处理信号,
#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
typedef void (*sighandler_t)(int);
void func(int sig)
{
if (SIGINT != sig)
return;
printf("func for signal: %d.\n", sig);
}
int main(void)
{
sighandler_t ret = (sighandler_t)-2;
//signal(SIGINT, func);
//signal(SIGINT, SIG_DFL); // 指定信号SIGINT为默认处理
ret = signal(SIGINT, SIG_IGN); // 指定信号SIGINT为忽略处理
if (SIG_ERR == ret)
{
perror("signal:");
exit(-1);
}
printf("before while(1)\n");
while(1);
printf("after while(1)\n");
return 0;
}
若不用signal函数,绑定func函数,则ctrl+c产生的信号,进行默认处理,即关掉该进程,
使用signal函数绑定func函数后,捕获到信号后,将运行func函数,