Chapter Contents

Previous

Next
sigpending

sigpending



Return Pending Signals

Portability: POSIX.1 conforming


SYNOPSIS
DESCRIPTION
RETURN VALUE
EXAMPLE
RELATED FUNCTIONS
SEE ALSO


SYNOPSIS

#include <lcsignal.h>

int sigpending(sigset_t *set);

The synopsis for the POSIX implementation is

#include <signal.h>

int sigpending(sigset_t *set);

You should use <signal.h> only if an appropriate feature test macro has been defined.


DESCRIPTION

sigpending returns the signals that are currently pending. The signal numbers are stored in the signal set addressed by set .

The sigpending function tests for pending signals (signals that have been generated for the process, but not delivered). In a POSIX system without extensions, a signal can be pending only if the signal is blocked. Some SAS/C extensions can delay delivery of one or more signals, even though the signal is not blocked. Any such delayed signals are included in the set of pending signals stored by sigpending .


RETURN VALUE

sigpending returns 0 if it is successful and -1 if it is not successful.


EXAMPLE

#include <signal.h>
#include <stdio.h>

   /* Define structure of POSIX signal names and numbers. */
const struct {   
   int signum;
   char *signame;
} sigtable[] = {
   {SIGABRT, "ABRT"},
   {SIGALRM, "ALRM"},
   {SIGCHLD, "CHLD"},
   {SIGCONT, "CONT"},
   {SIGFPE,  "FPE"},
   {SIGHUP,  "HUP"},
   {SIGILL,  "ILL"},
   {SIGINT,  "INT"},
   {SIGKILL, "KILL"},
   {SIGPIPE, "PIPE"},
   {SIGQUIT, "QUIT"},
   {SIGSEGV, "SEGV"},
   {SIGSTOP, "STOP"},
   {SIGTERM, "TERM"},
   {SIGTSTP, "TSTP"},
   {SIGTTIN, "TTIN"},
   {SIGTTOU, "TTOU"},
   {SIGUSR1, "USR1"},
   {SIGUSR2, "USR2"}};

void show_pending(void) {
   sigset_t sigset;
   int i;
   int count;

   if (sigpending(&sigset) != 0)
      perror("sigpending error");
   else {
      count = 0;            /* Initialize pending count.  */
      for(i = 0; i < sizeof(sigtable)/sizeof(sigtable[0]); ++i)
         if (sigismember(&sigset, sigtable[i].signum)) {
            printf("Signal SIG%s is pending.", sigtable[i].signame);
            ++count;
         }
      if (count == 0)       /* if no signals were pending */
         puts("No POSIX signals are pending.");
   }
}


RELATED FUNCTIONS

sigaddset , sigprocmask


SEE ALSO


Chapter Contents

Previous

Next

Top of Page

Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.