1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
/*****************************************************************************\
* prog1.53.prog.c - Simple signal catching test program
*****************************************************************************
* Copyright (C) 2002-2007 The Regents of the University of California.
* Copyright (C) 2008-2009 Lawrence Livermore National Security.
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
* Written by Morris Jette <jette1@llnl.gov>
\*****************************************************************************/
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <time.h>
#include <unistd.h>
static int sig_cnt;
void sig_handler(int sig)
{
switch (sig) {
case SIGINT:
printf("Received SIGINT\n");
sig_cnt++;
break;
default:
printf("Received unexpected signal %d\n", sig);
}
}
int
main(int argc, char **argv)
{
struct sigaction act;
time_t begin_time = time(NULL);
setbuf(stdout, NULL);
printf("Begin test\n");
act.sa_handler = sig_handler;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
if (sigaction(SIGINT, &act, NULL) < 0) {
perror("sigaction");
exit(2);
}
while (!sig_cnt) {
sleep(1);
}
printf("Job ran for %d secs\n", (int) (time(NULL) - begin_time));
exit(0);
}
|