[C++] 纯文本查看 复制代码
#include <stdio.h>
#include <setjmp.h>
#include <signal.h>
jmp_buf env; //保存待跳转位置的栈信息
/*信号 SIGRTMIN+15 的处理函数*/
void handler_sigrtmin15(int signo)
{
printf("recv SIGRTMIN+15\n");
longjmp(env, 1);
}
/*信号 SIGRTMAX-15 的处理函数*/
void handler_sigrtmax1(int signo)
{
printf("recv SIGRTMAX-1\n");
longjmp(env, 2);
}
int main()
{
/*设置返回点*/
switch(setjmp(env)) {
case 0:
break;
case 1:
printf("return from SIGRTMIN+15\n");
break;
case 2:
printf("return from SIGRTMAX-1\n");
break;
default:
break;
}
/*捕捉信号,安装信号处理函数*/
signal(SIGRTMIN+15, handler_sigrtmin15);
signal(SIGRTMAX-1, handler_sigrtmax1);
while(1)
;
return 0;
}