dksignal.h File Reference

Portable signal handling. More...

#include <dk.h>
#include <dktypes.h>

Go to the source code of this file.

Defines

#define DK_SIGNAL_SIGACTION   3
 dksignal_available() result: sigaction() available.
#define DK_SIGNAL_TYPE_SIGSET   2
 dksignal_available() result: sigset() available.
#define DK_SIGNAL_SIGNAL   1
 dksignal_available() result: signal() available.
#define DK_SIGNAL_NONE   0
 dksignal_available() result: No signal handling available.
#define dksignal_refresh(i, disp)
 Refresh signal handler.
#define dksignal_return(i)
 Return from signal handler.

Functions

dk_signal_disp_t dksignal_set (int signo, dk_signal_disp_t disp)
 Set signal handler.
int dksignal_available (void)
 Check available signal handling mechanisms.


Detailed Description

Portable signal handling.

This module provides data types and functions for signal handling. There are at least 3 signal handling function groups on Unix/Linux systems:

The code example below shows how to use the functions in this module:

        volatile int sigint_received = 0;

        dk_signal_ret_t
        sigint_handler(int signo) {
          dksignal_refresh(signo, sigint_handler);
          sigint_received = 1;
          dksignal_return(0);
        }

        int main(int argc, char *argv[]) {
          dk_signal_disp_t      disp_int = NULL;
          switch(dksignal_available()) {
            case DK_SIGNAL_NONE: {
              printf("Warning: No signal handling available.\n");
            } break;
            case DK_SIGNAL_SIGNAL: {
              printf("Warning: Signal handling uses signal() function.\n");
            } break;
          }
          disp_int = dksignal_set(SIGINT, sigint_handler);
          ... do something taking a while ...
          if(disp_int) dksignal_set(SIGINT, disp_int);
        }

Define Documentation

#define DK_SIGNAL_NONE   0

dksignal_available() result: No signal handling available.

#define DK_SIGNAL_SIGACTION   3

dksignal_available() result: sigaction() available.

#define DK_SIGNAL_SIGNAL   1

dksignal_available() result: signal() available.

#define DK_SIGNAL_TYPE_SIGSET   2

dksignal_available() result: sigset() available.

#define dksignal_refresh ( i,
disp   ) 

Refresh signal handler.

The first instruction of a signal handler should be dksignal_refresh(signo, handler_fct).

#define dksignal_return (  ) 

Return from signal handler.

The last instruction of a signal handler should be dksignal_return(0).


Function Documentation

int dksignal_available ( void   ) 

Check available signal handling mechanisms.

Returns:
Key number to indicate used signal handling mechanism:
  • DK_SIGNAL_SIGACTION if sigaction() is used,
  • DK_SIGNAL_SIGSET if sigset() is used,
  • DK_SIGNAL_SIGNAL if signal() is used or
  • DK_SIGNAL_NONE if no signal handling mechanism is available.

dk_signal_disp_t dksignal_set ( int  signo,
dk_signal_disp_t  disp 
)

Set signal handler.

The function assigns the handler disp to signal signo and returns a pointer to the previous handler.


Generated on Mon Jan 4 15:50:56 2010 for dklibs by  doxygen 1.5.8