This is Unofficial EPICS BASE Doxygen Site
osdSignal.cpp
Go to the documentation of this file.
1 /*************************************************************************\
2  * Copyright (c) 2010 UChicago Argonne LLC, as Operator of Argonne
3  * National Laboratory.
4  * Copyright (c) 2002 The Regents of the University of California, as
5  * Operator of Los Alamos National Laboratory.
6  * EPICS BASE is distributed subject to a Software License Agreement found
7  * in file LICENSE that is included with this distribution.
8 \*************************************************************************/
9 
10 /*
11  * Authors: J. Hill, A. Johnson
12  */
13 
14 #include <signal.h>
15 #include <stdio.h>
16 #include <errno.h>
17 #include <string.h>
18 
19 #include "epicsSignal.h"
20 
21 static void ignoreIfDefault(int signum, const char *name)
22 {
23  struct sigaction curAction;
24  int status = sigaction(signum, NULL, &curAction);
25 
26  if (status >= 0 &&
27  curAction.sa_handler == SIG_DFL) {
28  curAction.sa_handler = SIG_IGN;
29  status = sigaction(signum, &curAction, NULL);
30  }
31  if (status < 0) {
32  fprintf(stderr, "%s: sigaction failed for %s, %s\n",
33  __FILE__, name, strerror(errno));
34  }
35 }
36 
37 /*
38  * epicsSignalInstallSigHupIgnore ()
39  */
40 LIBCOM_API void epicsStdCall epicsSignalInstallSigHupIgnore (void)
41 {
42  ignoreIfDefault(SIGHUP, "SIGHUP");
43 }
44 
45 /*
46  * epicsSignalInstallSigPipeIgnore ()
47  */
48 LIBCOM_API void epicsStdCall epicsSignalInstallSigPipeIgnore (void)
49 {
50  ignoreIfDefault(SIGPIPE, "SIGPIPE");
51 }
52 
53 /* Disabled */
54 LIBCOM_API void epicsStdCall epicsSignalInstallSigAlarmIgnore ( void ) {}
55 LIBCOM_API void epicsStdCall epicsSignalRaiseSigAlarm
56  ( struct epicsThreadOSD * /* threadId */ ) {}
pvd::Status status
#define NULL
Definition: catime.c:38
LIBCOM_API void epicsStdCall epicsSignalInstallSigAlarmIgnore(void)
Definition: osdSignal.cpp:18
LIBCOM_API void epicsStdCall epicsSignalInstallSigHupIgnore(void)
Definition: osdSignal.cpp:16
LIBCOM_API void epicsStdCall epicsSignalRaiseSigAlarm(struct epicsThreadOSD *)
Definition: osdSignal.cpp:19
#define stderr
Definition: epicsStdio.h:32
OS-independent routines for ignoring Posix signals.
LIBCOM_API void epicsStdCall epicsSignalInstallSigPipeIgnore(void)
Definition: osdSignal.cpp:17