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

int i=0;

#define SIG1 SIGUSR1
#define SIG2 SIGUSR2

#define UNBLOCK 

void handler1(int sig)
{
    printf("SIG1,%d\n",i);
}

void handler2(int sig)
{
    printf("SIG2,%d\n" ,i);
}

main()
{
    
    signal(SIG1,handler1);
    signal(SIG2,handler2);
    for (;;) { 
	int t,m=siggetmask();
	t=sigmask(SIG1)|sigmask(SIG2)|m;
	if (sigsetmask(t)!=m) {
	    perror("mask");
	    exit(1);
	}

	kill(getpid(),SIG1);
//	kill(getpid(),SIG2);
//	kill(getpid(),SIG1);
//	kill(getpid(),SIG2);
//	kill(getpid(),SIG1);
//	kill(getpid(),SIG2);
	i +=1;

#if defined(UNBLOCK)
	if (sigsetmask(m)!=t) {
	    perror("unmask");
	    exit(1);
	}
#endif
	sleep(1);
    }
}