/*
 * test_siganl.c
 *
 * シグナルSIGFPEのシグナルハンドラをユーザー関数のhandler()に設定して、除算エラーを
 * 起こして、ユーザー関数実行させる。
 */


#include<sys/types.h>
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>


static void handler(int signum)
{
	struct sigaction act;


	printf("Do signal handler! %d\n",signum);
	act.sa_handler=SIG_DFL;
	act.sa_mask=act.sa_flags=0;
	if(sigaction(SIGFPE,&act,NULL)==-1)
		printf("Failed sigaction()!\n");
}

int main(int argc,char *argv[])
{
	struct sigaction act;


	act.sa_handler=handler;
	act.sa_mask=act.sa_flags=0;
	if(sigaction(SIGFPE,&act,&act)==-1)
	{
		printf("Failed sigaction()!\n");
		return 0;
	}
	printf("act.sa_handler=%x\n",act.sa_handler);

	printf("%d\n",1/0);

	return 0;
}
