SIGNAL(2)

JMÉNO
signal - práce se signály v ANSI C

SYNTAXE
#include <signal.h>

void (*signal(int signum, void (*handler)(int)))(int);

POPIS
Systémové volání signal instaluje novou obslužnou funkci pro signál s číslem signum. Obsluha signálu je nastavena na handler, což může být uživatelsky definovaná funkce, nebo jedna z následujících konstant:

    SIG_IGN
        Signál bude ignorován.

    SIG_DFL
        Nastaví se standardní obsluha signálu.

Obslužná funkce dostane při zavolání jako parametr číslo signálu. To umožňuje použít jednu obslužnou funkci pro více signálů.

NÁVRATOVÁ HODNOTA
Funkce signal vrací předchozí hodnotu obsluhy signálu, nebo SIG_ERR , nastane-li chyba.

POZNÁMKY
Nelze nastavit obsluhu signálů SIGKILL a SIGSTOP.

V Linuxu se na rozdíl od systémů BSD obsluha signálu vrací při příchodu signálu na standardní hodnotu. Když ale použijete #include <bsd/signal.h> místo <signal.h> , je funkce signal předefinována na __bsd_signal a chová se jako v BSD. Obě verze funkce signal jsou knihovní funkce, které používají systémové volání sigaction(2).

Není-li Vám jasná syntaxe uvedená na začátku této manuálové stránky, možná Vám pomůže tento ekvivalentní zápis:

typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);

Podle normy POSIX není definováno chování procesu poté, co ignoruje signál SIGFPE, SIGILL, nebo SIGSEGV, který nebyl generován funkcemi kill() nebo raise(). Celočíselné dělení nulou dává nedefinovaný výsledek a na některých architekturách generuje signál SIGFPE. Ignorování tohoto signálu může způsobit zacyklení procesu.

SPLŇUJE STANDARDY
ANSI C

DALŠÍ INFORMACE
kill(1), kill(2), killpg(2), pause(2), raise(3), sigaction(2), signal(7), sigsetops(3), sigvec(2), alarm(2).