#include
<stdio.h>
#include <signal.h>
#include <sys/signal.h>
void handler( int sig )
{
/* do nothing */
}
void main( void )
{
if( fork() == 0
)
{
for(;;)
{
static int
cnt = 1;
fprintf(
stdout, " Child [%d]: sleep(2)\n", cnt );
sleep( 2
);
fprintf(
stdout, " Child [%d]: sending SIGUSR1\n\n", cnt++ );
kill(
getppid(), SIGUSR1 );
}
}
else
{
sigset(
SIGUSR1, handler );
for(;;)
{
static int unslept, cnt = 1;
fprintf(
stderr, "Parent [%d]: sleep(10)\n", cnt );
unslept =
sleep( 10 );
fprintf(
stderr, "Parent [%d]: done (%d unslept)\n", cnt++, unslept );
}
}
}