Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ bsd_signal(3C) — SunOS 5.6

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

sigaction(2)

sigaddset(3C)

sigemptyset(3C)

signal(3B)

bsd_signal(3C)

NAME

bsd_signal − simplified signal facilities

SYNOPSIS

#include <signal.h>

void (∗bsd_signal(int sig, void (∗func)(int)))(int);

DESCRIPTION

The bsd_signal() function provides a partially compatible interface for programs written to historical system interfaces (see USAGE below). 

The function call bsd_signal(sig, func) has an effect as if implemented as:

void (∗bsd_signal(int sig, void (∗func)(int)))(int)
{
     struct sigaction act, oact;
     act.sa_handler = func;
     act.sa_flags = SA_RESTART;
     sigemptyset(&act.sa_mask);
     sigaddset(&act.sa_mask, sig);
     if (sigaction(sig, &act, &oact) == -1)
          return(SIG_ERR);
     return(oact.sa_handler);
}

The handler function should be declared:

void handler(int sig);

where sig is the signal number.  The behavior is undefined if func is a function that takes more than one argument, or an argument of a different type. 

RETURN VALUES

Upon successful completion, bsd_signal() returns the previous action for sig.  Otherwise, SIG_ERR is returned and errno is set to indicate the error. 

ERRORS

Refer to sigaction(2). 

USAGE

This function is a direct replacement for the BSD signal(3B) function for simple applications that are installing a single-argument signal handler function.  If a BSD signal handler function is being installed that expects more than one argument, the application has to be modified to use sigaction(2).  The bsd_signal() function differs from signal(3B) in that the SA_RESTART flag is set and the SA_RESETHAND will be clear when bsd_signal() is used.  The state of these flags is not specified for signal(3B). 

SEE ALSO

sigaction(2), sigaddset(3C), sigemptyset(3C), signal(3B)

SunOS 5.6  —  Last change: 29 Mar 1996

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026