⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wrong_return.c

📁 此源码是著名的教材BeginningLinux Programming中文名字叫Linux程序设计书中的源代码
💻 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);	// 返回到env处,注意第二个参数的值
}

/*信号SIGRTMAX-15的处理函数*/
void handler_sigrtmax15(int signo)
{
	printf("recv SIGRTMAX-15\n");
	longjmp(env, 2);	// 返回到env处,注意第二个参数的值
}

int main()
{
	/*设置返回点*/
	switch (setjmp(env)) {
		case 0:
			break;
		case 1:
			printf("return from SIGRTMIN+15\n");
			break;
		case 2:
			printf("return from SIGRTMAX-15\n");
			break;
		default:
			break;
	}

	/*捕捉信号,安装信号处理函数*/
	signal(SIGRTMIN+15, handler_sigrtmin15);
	signal(SIGRTMAX-15, handler_sigrtmax15);

	while (1)
		;

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -