Scroll to navigation

SIGNAL(2) Linux - příručka Programátora 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:

Signál bude ignorován.
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).

VAROVÁNÍ

Překlad je pravděpodobně zastaralý. Pokud chcete pomoci s jeho aktualizací, zamiřte na http://man-pages-cs-wiki.homelinux.net/

18. února 1997 Linux 2.0