C++信号

首先什么是信号(signal),基本可以理解成改变程序流程的一个东西

信号是一种软件中断,一种向进程传递有关其他进程,操作系统和硬件状态的信息的方法。信号是一种中断,因为它可以改变程序的流程。当信号传递给进程时,进程将停止其执行的操作,处理或忽略信号,或者在某些情况下终止,取决于信号。

几种常用信号

SIGINT 2 表示信号中断的意思

SIGILL 4主要用于检测非法指令

SIGSEGV 11表示非法访问内存

SIGTERM 15 表示发送到程序的终止请求

SIGBREAK 21 表示 信号中止,异常终止。程序提前结束

信号
SIGABRT (信号中止)异常终止,例如由...发起 退出 功能。
SIGFPE (信号浮点异常)错误的算术运算,例如零分频或导致溢出的运算(不一定是浮点运算)。
SIGILL (信号非法指令)无效的功能图像,例如非法指令。这通常是由于代码中的损坏或尝试执行数据。
SIGINT (信号中断)交互式注意信号。通常由应用程序用户生成。
SIGSEGV (信号分段违规)对存储的无效访问:当程序试图在已分配的内存之外读取或写入时。
SIGTERM (信号终止)发送到程序的终止请求。
int main()
{
	//注册
	signal(SIGFPE,Signal_Function);
	signal(SIGINT, Signal_Function1);
	signal(SIGSEGV, Signal_Function2);

	for (int i = 0;;i++)
	{
		if (i >= 85) //这是错误,就是程序产生错误需要中断
		{
			raise(SIGFPE);//激活,需要的时候调用
			raise(SIGINT);
			raise(SIGSEGV);
			break;
		}
	}

	return 0;
}

void Signal_Function(int InSignal)
{
	cout<< InSignal <

你可能感兴趣的:(人宅硬核C++,c++)