File: test6.13.prog.c

package info (click to toggle)
slurm-wlm 22.05.8-4%2Bdeb12u3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 48,492 kB
  • sloc: ansic: 475,246; exp: 69,020; sh: 8,862; javascript: 6,528; python: 6,444; makefile: 4,185; perl: 4,069; pascal: 131
file content (54 lines) | stat: -rw-r--r-- 1,292 bytes parent folder | download | duplicates (10)
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
54
/*****************************************************************************\
 * prog6.13.prog.c - Simple signal catching test program for Moab regression
 *****************************************************************************
 * Copyright (C) 2002-2007 The Regents of the University of California.
 * 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>

int sig_cnt = 0;

void sig_handler(int sig)
{
	switch (sig)
	{
		case SIGUSR1:
			printf("Received SIGUSR1\n");
			fflush(stdout);
			sig_cnt++;
			break;
		default:
			printf("Received unexpected signal %d\n", sig);
			fflush(stdout);
	}
}

int main (int argc, char **argv)
{
	struct sigaction act;
	time_t begin_time = time(NULL);

	act.sa_handler = sig_handler;
	sigemptyset(&act.sa_mask);
	act.sa_flags = 0;
	if (sigaction(SIGUSR1, &act, NULL) < 0) {
		perror("sigaction");
		exit(2);
	}

	printf("WAITING\n");
	fflush(stdout);

	while (!sig_cnt) {
		sleep(1);
	}
	printf("Job ran for %d secs\n", (int) (time(NULL) - begin_time));
	exit(0);
}