unix环境高级编程基础知识--信号

1,信号是软件中断,也就是指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。说白了就是程序执行中的中断,而非硬件cpu的中断。
2,信号处理及动作
1,忽略此信号,不推荐
2,捕捉信号
3,执行系统默认动作,(可以理解为跳到指定中断函数)、这里叫信号处理程序

3,signal函数
#include
void (*signal(int signo,void(*func)(int)))(int);

两个参数
第一个参数是signo

固定的信号名
比如SIGINT中断信号
SIGIO 异步I/O事件
SIGUSR1 用户定义信号,可用于应用程序

#include "apue.h"
static void sig_usr(int);
int main(void)
{
	if(signal(SIGUSR1,sig_usr)==SIG_ERR)
		 printf("can't catch SIGUSR1");
	if(signal(SIGUSR2,sig_usr)==SIG_ERR)
		 printf("can't catch SIGUSR2");
	for(;;)
		pause();
}
static void sig_usr(int signo)
{
	if(signo == SIGUSR1)
	printf("received SIGUSR1\n");
	if(signo == SIGUSR2)
	printf("received SIGUSR2\n");
	else
	printf("err");
}

你可能感兴趣的:(嵌入式,linux)