Provided by: manpages-nl-dev_4.13-4_all bug

NAAM

       sigaction, rt_sigaction - onderzoek en verander een signaal actie

SAMENVATTING

       #include <stdio.h>

       int sigaction(int signum, const struct sigaction *act,
                     struct sigaction *oudeact);

   Test Macro´s in glibc (zie feature_test_macros(7)):

       sigaction(): _POSIX_C_SOURCE

       siginfo_t: _POSIX_C_SOURCE >= 199309L

BESCHRIJVING

       De  sigaction() systeem aanroep wordt gebruikt om de te nemen actie door een proces bij ontvangst van een
       signaal te veranderen. (Zie signal(7) voor een overzicht van de signalen.)

       signum bepaald het signaal en kan elk geldig signaal zijn behalve SIGKILL en SIGSTOP.

       Als act on-gelijk nul is wordt de nieuwe actie voor het signaal signum geïnstalleerd van act. Als oudeact
       niet-nul is, dan wordt de vorige actie bewaard in oudeact.

       De sigaction structuur is bepaald als

           struct sigaction {
               void     (*sa_handler)(int);
               void     (*sa_sigaction)(int, siginfo_t *, void *);
               sigset_t   sa_mask;
               int        sa_flags;
               void     (*sa_restorer)(void);
           };

       Op sommige architecturen wordt een union gebruikt: ken niet aan beiden sa_handler en sa_sigaction toe

       Het sa_restorer veld is is niet bedoeld voor gebruik in applicaties. (POSIX specificeert het  sa_restorer
       veld niet.) Meer details over het doel van dit veld kunnen worden gevonden in sigreturn(2)

       sa_handler specificeert de actie die wordt geassocieerd met signum en dat is een van de volgende:

       * SIG_DFL voor de standaard actie.

       * SIG_IGN om dit signaal te negeren.

       * Een  wijzen  naar een signaal afhandel functie. Deze functie ontvangt het signaal nummer als zijn enige
         argument.

       Als SA_SIGINFO werd opgegeven in sa_flags dan specificeert sa_sigaction (in plaats   van  sa_handler)  de
       signaal afhandel functie voor signum. Deze functie ontvangt drie argumenten zoals hieronder beschreven.

       sa_mask  specificeert  een  masker voor signalen die geblokkeerd zouden moeten worden (dat is, toegevoegd
       aan een signaal masker van de thread in welke de  signaal  afhandelaar  wordt  aangeroepen)   tijdens  de
       uitvoering  van  de  signaal afhandelaar. In toevoeging daarop zal het signaal dat de behandelaar af liet
       gaan geblokkeerd worden, tenzij de SA_NODEFER vlag werd gebruikt.

       sa_flags geeft een aantal vlaggen op die het gedrag van het signaal behandelings  proces  aanpassen.  Het
       wordt gevormd door de bitsgewijze OF van nul of meer van het volgende:

       SA_NOCLDSTOP
              Als  signum  SIGCHLD is, ontvang geen bericht wanneer kind processen stoppen (dat is, wanneer deze
              een van SIGSTOP, SIGTSTP, SIGTTIN of SIGTTOU ontvangen) of ga door (dat is, ze ontvangen  SIGCONT)
              (zie  wait(2)).  Deze  vlag  is  alleen  van  betekenis bij het inrichten van een afhandelaar voor
              SIGCHLD.

       SA_NOCLDWAIT (sinds Linux 2.6)
              Als signum gelijk is aan SIGCHLD transformeer dan kinderen niet in zombies wanneer  zij  eindigen.
              Zie  ook waitpid(2).  Deze vlag is alleen van betekenis bij het inrichten van een afhandelaar voor
              SIGCHLD, of bij het zetten van een signaal dispositie op SIG_DFL.

              Als de SA_NOCLDWAIT vlag werd gezet bij het inrichten van een afhandelaar voor SIGCHLD,  dan  laat
              POSIX.1  het  ongespecificeerd  of  een  SIGCHLD  signaal  wordt gegenereerd zodra een kind proces
              eindigt.  Op Linux, wordt een SIGCHLD  in dit geval gegenereerd; op sommige andere  implementaties
              is dit niet het geval .

       SA_NODEFER
              Voeg  geen  signaal  toe  aan  het  thread signaal masker terwijl de afhandelaar wordt uitgevoerd,
              behalve als het signaal werd opgegeven in act.sa_mask.  Bijgevolg mag een volgende  instantie  van
              het  signaal  worden  afgeleverd  bij de thread terwijl deze de afhandelaar uitvoert. Deze vlag is
              alleen van betekenis bij het inrichten van de signaal afhandelaar.

              SA_NOMASK is een overbodig, niet-standaard synoniem voor deze vlag.

       SA_ONSTACK
              Roep de signaal afhandelaar aan op een alternatieve stack voorzien door signalstack(2). Indien een
              alternatieve stack niet beschikbaar is, dan wordt de standaard stack gebruikt. Deze vlag is alleen
              van betekenis bij het inrichten van een signaal afhandelaar.

       SA_RESETHAND
              Herstel de signaal actie naar de standaard bij het binnengaan in de signaal afhandelaar. Deze vlag
              is alleen van betekenis bij het inrichten van een signaal afhandelaar.

              SA_ONESHOT is een verouderd, niet-standaard synoniem voor deze vlag.

       SA_RESTART
              Voorzie in gedrag overeenkomend  met  BSD  signaal-semantiek  bij  het  herstartbaar  maken  langs
              signalen  van  bepaalde  systeem aanroepen. Deze vlag heeft alleen betekenis bij het inrichten van
              een signaal afhandelaar. Zie signal(7) voor een discussie over  het  herstarten  van  een  systeem
              aanroep.

       SA_RESTORER
              Not  intended  for  application use. Deze vlag wordt gebruikt door C bibliotheken om  aan te geven
              dat het sa_restorer veld het adres van een "signaal trampoline"  bevat.   Zie  sigreturn(2)   voor
              meer details.

       SA_SIGINFO (sinds Linux 2.2)
              De signaal afhandelaar neemt drie argumenten, niet een. In dit geval zou sa_sigaction gezet moeten
              zijn  in  plaats  van  sa_handler.  Deze vlaggen is alleen van betekenis bij het inrichten van een
              signaal afhandelaar.

   Het siginfo_t argument voor een SA_SIGINFO afhandelaar
       Indien de SA_SIGINFO  vlag werd gespecificeerd in act.sa_flags dan wordt het  adres  van  de  afhandelaar
       doorgegeven via het act.sa_sigaction veld. Deze afhandelaar heeft drie argumenten, die zijn als volgt:

           void
           handler(int sig, siginfo_t *info, void *ucontext)
           {
               ...
           }

       Deze drie argumenten zijn als volgt

       sig    Het nummer van het signaal de de aanroep van de afhandelaar veroorzaakte.

       info   Een  wijzer  naar  een  siginfo_t,  hetgeen een structure is die verdere informatie bevat over het
              hieronder beschreven signaal.

       ucontext
              Dit is een wijzer naar een ucontext_t structure, cast naar void *.  De structure  aangewezen  door
              dit  veld bevat signaal context informatie die werd bewaard in de gebruikers-stack door de kernel;
              zie sigreturn(2) voor details. Verdere informatie over de ucontext_t structure kan worden gevonden
              in getcontext(3)  en signal(7). In het algemeen maakt de afhandelaar functie geen gebruik van  het
              derde argument.

       Het siginfo_t data type is een structure met de volgende velden:

           siginfo_t {
               int      si_signo;     /* Signaal nummer */
               int      si_errno;     /* Een fout waarde */
               int      si_code;      /* Signaal code */
               int      si_trapno;    /* Trap nummer dat het
                                         hardware-gegenereerde signaal veroorzaakte
                                         (ongebruikt op de meeste architecturen) */
               pid_t    si_pid;       /* proces ID van de zender*/
               uid_t    si_uid;       /* Huidig UID van zendende proces */
               int      si_status;    /* Exit waarde of signaal */
               clock_t  si_utime;     /* Gebruikte User tijd */
               clock_t  si_stime;     /* Gebruikte Systeem tijd  */
               union sigval si_value; /* Signaal waarde */
               int      si_int;       /* POSIX.1b signal */
               void    *si_ptr;       /* POSIX.1b signal */
               int      si_overrun;   /* Timer overrun teller;
                                         POSIX.1b timers */
               int      si_timerid;   /* Timer ID; POSIX.1b timers */
               void    *si_addr;      /* Geheugen locatie die fout veroorzaakte */
               long     si_band;      /* Band gebeurtenis (was int in
                                         glibc 2.3.2 en eerder) */
               int      si_fd;        /* Bestandsindicator */
               short    si_addr_lsb;  /* Minst significant bit van adres
                                         (vanaf Linux 2.6.32) */
               void    *si_lower;     /* Laagste grens bij adres schending
                                         occurred (vanaf Linux 3.19) */
               void    *si_upper;     /* Hoogste grens bij adres schending
                                         occurred (vanaf Linux 3.19) */
               int      si_pkey;      /* Beveiliging sleutel op PTE die fout
                                         veroorzaakte (vanaf Linux 4.6) */
               void    *si_call_addr; /* Addres van de systeem aanroep instructie
                                         (vanaf Linux 3.5) */
               int      si_syscall;   /* Aantal geprobeerde systeem aanroepen
                                         (vanaf Linux 3.5) */
               unsigned int si_arch;  /* Architecture van geprobeerde systeem aanroep
                                         (vanaf Linux 3.5) */
           }

       si_signo,  si_errno en si_code zijn gedefinieerd voor alle signalen. (si_errno wordt in het algemeen niet
       gebruikt op Linux.)  De rest van de structure mag een union zijn, zodat men alleen die velden moet  lezen
       die van betekenis zijn voor het gegeven signaal:

       * Signalen  verzonden  met kill(2)  en sigqueue(3)  vullen si_pid ensi_uid in.  Daarnaast vullen signalen
         verzonden met  sigqueue(3) si_int en si_ptr in met de  waarden  opgegeven  door  de  afzender  van  het
         signaal; zie sigqueue(3)  voor meer details.

       * Signalen  verzonden  door  POSIX.1b  timers  (vanaf Linux 2.6) vullen si_overrun en si_timerid in.  Het
         si_timerid veld is een intern ID dat gebruikt wordt door de kernel om de timer te identificeren; dit is
         niet dezelfde als de timer ID die geretourneerd wordt door timer_create(2).  Het si_overrun veld is  de
         overloop   teler;   dit   is   dezelfde   informatie   die   wordt   verkregen  door  een  aanroep  van
         timer_getoverrun(2).  Deze velden zijn niet standaard Linux uitbreidingen.

       * Signalen  verzonden  voor  berichten  rij  notificatie  (zie  de  beschrijving  van   SIGEV_SIGNAL   in
         mq_notify(3))   vul  si_int/si_ptr  in,  met  de  sigev_value geleverd aan mq_notify(3); si_pid, met de
         proces ID van de berichten afzender; en si_uid, met het echte gebruiker ID van de berichten afzender.

       * SIGCHLD vult si_pid, si_uid, si_status, si_utime en si_stime in, informatie gevend over het kind.   Het
         si_pid  veld  is  het  proces  ID  van  het  kind;  si_uid is het echte gebruikers ID van het kind. Het
         si_status veld bevat de eind status van het kind (als si_code gelijk is aan  CLD_EXITED) of het signaal
         nummer dat de status verandering van het proces veroorzaakte.  De si_utime  en  si_stime  bevatten  het
         gebruiker-  en  systeem  CPU  tijd  gebruikt  door het kind proces; deze velden bevatten niet de tijden
         gebruikt door het wachten-op kinderen (anders dan getrusage(2)  en times(2)). In kernels tot en met 2.6
         en vanaf 2.6.27 rapporteren deze velden CPU tijd in eenheden van sysconf(_SC_CLK_TCK). In  2.6  kernels
         voor   2.6.27  zorgde  een  bug  ervoor  dat  deze  velden  tijden  rapporteerde  in  eenheden  van  de
         (configureerbare) systeem jiffy (zie time(7)).

       * SIGILL, SIGFPE, SIGSEGV, SIGBUS, en SIGTRAP vullensi_addr in met het adres van  de  fout.   Op  sommige
         architecturen, vullen deze signalen ook het si_trapno veld in.

         Sommige  sub-fouten van SIGBUS, in het bijzonder BUS_MCEERR_AO en BUS_MCEERR_AR, vullen ook si_addr_lsb
         in. Dit veld geeft het minst significante bit aan van het gerapporteerde adres en daarmee de omvang van
         de corruptie.  Bij  voorbeeld  als  een  complete  pagina  werd  gecorrumpeerd  van  bevat  si_addr_lsb
         log2(sysconf(_SC_PAGESIZE)).  Wanneer SIGTRAP werd afgeleverd als antwoord op een ptrace(2) gebeurtenis
         (PTRACE_EVENT_foo) dan wordt si_addr niet beschreven, maar  worden  si_pid  en  si_uid  beschreven  met
         respectievelijk het proces ID en gebruikers ID verantwoordelijk voor het leveren van de valkuil. In het
         geval  van seccomp(2) zal de gevolgde die de gebeurtenis geleverd heeft worden getoond. BUS_MCEERR_* en
         si_addr_lsb zijn Linux-specifieke uitbreidingen.

         De SEGV_BNDERR sub-fout van SIGSEGV vult si_lower en si_upper.

         De SEGV_PKUERR sub-fout van SIGSEGV vult si_pkey.

       * SIGIO/SIGPOLL (de twee namen zijn synoniemen op  Linux)   vullen  si_band  en  si_fd  in.   De  si_band
         gebeurtenis  is  een  bit  masker  dat  dezelfde  waarden bevat zoals ingevuld in het revents veld door
         poll(2).  Het si_fd veld geeft de bestandsindicator voor welke de  Invoer/Uitvoer  gebeurtenis  optrad;
         zie voor verdere details de beschrijving van F_SETSIG in fcntl(2).

       * SIGSYS  wordt  gegenereerd  (vanaf  Linux 3.5) zodra een seccomp filter SECCOMP_RET_TRAP terugkeert, en
         vult si_call_addr, si_syscall, si_arch, si_errno in, en andere velden zoals beschreven in seccomp(2).

   Het si_code veld
       Het si_code  veld  in  het  siginfo_t  argument,  dat  wordt  doorgegeven  naar  een  SA_SIGINFO  signaal
       afhandelaar,  is  een  waarde  (geen bit masker) die aangeeft waarom dit signaal werd verstuurd. Voor een
       ptrace(2) gebeurtenis zal si_code SIGTRAP bevatten en heeft een ptrace gebeurtenis in het hoge byte:

           (SIGTRAP | PTRACE_EVENT_foo << 8).

       Voor een niet-ptrace gebeurtenis, worden de waarden die kunnen verschijnen in si_code beschreven  in  het
       vervolg  van  deze  sectie.  Vanaf  glibc  2.20 worden de definities van de meeste symbolen verkregen uit
       <signal.h>  door het definiëren van feature test macro´s (vóór het invoegen van enig header bestand)  als
       volgt:

       *  _XOPEN_SOURCE met een waarde van 500 of groter;

       *  _XOPEN_SOURCE en _XOPEN_SOURCE_EXTENDED; of

       *  _POSIX_C_SOURCE met een waarde van 200809L of groter.

       Voor  de  TRAP_* constanten worden de symbool definities alleen in de eerste twee gevallen voorzien. Voor
       glibc 2.20 werden geen feature test macro´s vereist om deze symbolen te verkrijgen.

       Voor een regulier signaal toont de volgende lijst de waarden die kunnen worden geplaatst in si_code  voor
       elk signaal, samen met de reden waarom dat signaal werd gegenereerd.

           SI_USER
                  kill(2).

           SI_KERNEL
                  Verzonden door de kernel.

           SI_QUEUE
                  sigqueue(3).

           SI_TIMER
                  POSIX timer liep af.

           SI_MESGQ (sinds Linux 2.6.6)
                  POSIX berichten rij toestand veranderde; zie mq_notify(3).

           SI_ASYNCIO
                  AIO voltooid.

           SI_SIGIO
                  SIGIO  in wachtrij (alleen in kernels tot en met Linux 2.2: vanaf Linux 2.4 vult SIGIO/SIGPOLL
                  si_code in zoals hieronder beschreven).

           SI_TKILL (vanaf Linux 2.4.19)
                  tkill(2) of tgkill(2).

       De volgende waarden kunnen worden geplaatst in si_code voor een SIGILL signaal:

           ILL_ILLOPC
                  Ongeldige opcode.

           ILL_ILLOPN
                  Ongeldige operand.

           ILL_ILLADR
                  Ongeldige adresseer "mode".

           ILL_ILLTRP
                  Ongeldige valkuil.

           ILL_PRVOPC
                  Geprivilegieerde opcode.

           ILL_PRVREG
                  Geprivilegieerd register.

           ILL_COPROC
                  Hulpprocessor fout.

           ILL_BADSTK
                  Inwendige stapel fout.

       De volgende waarden kunnen worden geplaatst in si_code voor een SIGFPE signaal:

           FPE_INTDIV
                  Geheel getal delen door nul.

           FPE_INTOVF
                  Geheel getal overloop.

           FPE_FLTDIV
                  Drijvende komma deel door nul.

           FPE_FLTOVF
                  Drijvende komma overloop.

           FPE_FLTUND
                  Drijvende komma onderloop.

           FPE_FLTRES
                  Drijvende komma onprecies antwoord.

           FPE_FLTINV
                  Drijvende komma ongeldige operatie.

           FPE_FLTSUB
                  Index buiten bereik.

       De volgende waarden kunnen worden geplaatst in  si_code voor een SIGSEGV signaal:

           SEGV_MAPERR
                  Adres niet verbonden met object.

           SEGV_ACCERR
                  Ongeldige toestemmingen voor "mapped" object.

           SEGV_BNDERR (sinds Linux 3.19)
                  Gefaalde adresgrenzen controles.

           SEGV_PKUERR (sinds Linux 4.6)
                  Toegang werd geweigerd voor geheugen  bescherming  sleutels.  Zie  pkeys(7).   de  bescherming
                  sleutel die van toepassing was op deze toegang is beschikbaar via si_pkey.

       De volgende waarden kunnen worden geplaatst in si_code voor een SIGBUS signaal:

           BUS_ADRALN
                  Ongeldige adres oplijning.

           BUS_ADRERR
                  Niet bestaand fysiek adres.

           BUS_OBJERR
                  Object-eigen "hardware" fout.

           BUS_MCEERR_AR (sinds Linux 2.6.32)
                  Hardware geheugen fout verwerkt bij een machine controle; actie vereist.

           BUS_MCEERR_AO (sinds Linux 2.6.32)
                  Hardware geheugen fout gedetecteerd in een proces maar niet verwerkt; actie is optioneel.

       De volgende waarden kunnen worden geplaatst in si_code voor een SIGTRAP signaal:

           TRAP_BRKPT
                  Proces breekpunt.

           TRAP_TRACE
                  Proces volgpunt valkuil.

           TRAP_BRANCH (vanaf Linux 2.4, IA64 only)
                  Genomen proces aftak valkuil.

           TRAP_HWBKPT (vanaf Linux 2.4, IA64 only)
                  Hardware breekpunt/watchpoint.

       De volgende waarden kunnen worden geplaatste in si_code voor een SIGCHLD signaal:

           CLD_EXITED
                  Kind is beëindigd.

           CLD_KILLED
                  Kind was vermoord.

           CLD_DUMPED
                  Kind eindigde abnormaal.

           CLD_TRAPPED
                  Gevolgd kind viel in valkuil.

           CLD_STOPPED
                  Kind is gestopt.

           CLD_CONTINUED (sinds Linux 2.6.9)
                  Gestopt kind is doorgegaan.

       De volgende waarden kunnen worden gezet in  si_code voor een SIGIO/SIGPOLL signaal:

           POLL_IN
                  Gegevens invoer beschikbaar.

           POLL_OUT
                  Uitvoer buffers beschikbaar.

           POLL_MSG
                  Invoer bericht beschikbaar.

           POLL_ERR
                  In/uit fout.

           POLL_PRI
                  Hoge prioriteit invoer beschikbaar.

           POLL_HUP
                  Apparaat los gemaakt.

       De volgende waarde kan worden geplaatst in si_code voor een SIGSYS signaal:

           SYS_SECCOMP (sinds Linux 3.5)
                  Getriggerd door een seccomp(2) filter regel

EIND WAARDE

       Bij  succes  geeft  sigaction()  nul  terug.  Bij falen wordt -1 teruggegeven en wordt errno naar behoren
       gezet.

FOUTEN

       EFAULT act of oudeact wijzen naar geheugen dat niet een geldig onderdeel van de proces adres ruimte is.

       EINVAL Een ongeldig signaal werd opgegeven. Dit zal ook voortgebracht worden als een poging wordt  gedaan
              om de actie voor SIGKILL of SIGSTOP te veranderen, die niet gevangen kunnen worden.

VOLDOET AAN

       POSIX.1-2001, POSIX.1-2008, SVr4.

OPMERKINGEN

       Een  kind  aangemaakt  met  fork(2)  erft een kopie van de signaal dispositie van zijn ouder. Tijdens een
       execcve(2) worden de disposities  van  de  afgehandelde  signalen  terug  gezet  naar  de  standaard;  de
       dispositie van de genegeerde signalen blijft onveranderd.

       Volgens  POSIX  is het gedrag van een proces ongedefinieerd als het een SIGFPE, SIGILL of SIGSEGV negeert
       dat niet voortgebracht werd door de kill() of de raise()  functies.  Heel  getal  delen  door  nul  heeft
       ongedefinieerd  gevolg.  Op  sommige architecturen zal het een SIGFPE signaal veroorzaken. (Ook het delen
       van het meest negatieve hele getal door -1 kan een SIGFPE veroorzaken.) Negeren van dit signaal  zou  tot
       een eindeloze lus kunnen leiden.

       POSIX.1-1990  stond  niet toe om de actie voor SIGCHLD op SIG_IGN te zetten.  POSIX.1-2001 en later stond
       dit toe, zodat het negeren van SIGCHLD kan worden  gebruikt  om  zombies  aan  te  maken  (zie  wait(2)).
       Desalniettemin  verschillen  de historische BSD en System V gedragingen voor negeren van  SIGCHLD, daarom
       is de enige compleet overdraagbare methode om te voorkomen dat  beëindigde  kinderen  zombies  worden  om
       signaal SIGCHLD op te vangen en het uitvoeren van een wait(2)  of vergelijkbaar.

       POSIX.1-1990   specificeerde   alleen  SA_NOCLDSTOP.   POSIX.1-2001  voegde  SA_NOCLDSTOP,  SA_NOCLDWAIT,
       SA_NODEFER, SA_ONSTACK, SA_RESETHAND, SA_RESTART, en SA_SIGINFO toe.  Het gebruik van de laatste  waarden
       in   sa_flagsis  mogelijk  minder  overdraagbaar  in  applicaties  die  bedoeld  zijn  voor  oudere  UNIX
       implementaties.

       De SA_RESETHAND vlag is overdraagbaar met de SVr4 vlag met dezelfde naam.

       De SA_NODEFER vlag is compatibel met de SVr4 vlag met dezelfde naam onder kernels 1.3.9  en  nieuwer.  Op
       oudere  kernels  liet  de  Linux-implementatie  het ontvangen van elk signaal toe, niet alleen dat dat we
       installeren (daarbij de sa_mask instelling overschrijvend).

       sigaction() kan aangeroepen worden met een tweede  argument  nul  om  de  huidige  signaalbehandelaar  te
       ondervragen.  Het  kan  ook gebruikt worden om te testen of een gegeven signaal geldig is voor de huidige
       machine, door het aan te roepen met 'nul' tweede en derde argumenten.

       Het is niet mogelijk om SIGKILL of SIGSTOP te blokkeren door opgeven in sa_mask. Pogingen om dat te  doen
       zullen stilzwijgend genegeerd worden.

       Ze  sigsetops(3)  voor details hoe signaal verzamelingen te manipuleren.

       Zie  signal-safety(7)  voor een lijst van de async-signal-safe functies die veilig gebruikt kunnen worden
       binnen een signaal afhandelaar.

   C library/kernel verschillen
       De glibc omwikkel functie voor sigaction() meldt een fout (EINVAL)  bij  pogingen  om  de  dispositie  te
       veranderen van de twee realtime signalen die intern worden gebruikt door de NPTL threading implementatie.
       Zie nptl(7)  voor details.

       Op  architecturen  waar de signaal trampoline zich in de C bibliotheek bevindt, plaatst de glibc omwikkel
       functie voor sigaction() het adres van  de  trampoline  code  in  het  act.sa_restorer  veld  en  zet  de
       SA_RESTORER vlag in het act.sa_flags veld.  Zie sigreturn(2).

       De  originele  Linux  systeem  aanroep was sigaction(). Echter met het toevoegen van realtime signalen in
       Linux 2.2 was het vaste-grootte 32-bit sigset_t type ondersteund  door  die  systeem  aanroep  niet  meer
       geschikt  voor  dit  doel.  Daarom werd de nieuwe systeem aanroep rt_sigaction() toegevoegd om een groter
       sigset_t type  te  ondersteunen.  De  nieuwe  systeem  aanroep  benodigd   een  vierde  argument,  size_t
       sigsetsize,   die  de  grootte  in  bytes  bepaald  van   de  signaal  verzamelingen  in  act.sa_mask  en
       oudeact.sa_mask. Dit argument vereist momenteel de waarde sizeof(sigset_t) (of de fout EINVAL waarde). De
       glibc sigaction() omwikkel functie verbergt deze details voor ons, door transparant rt_sigaction() aan te
       roepen wanneer de kernel daarin voorziet.

   Niet gedocumenteerd
       Voor de introductie van SA_SIGINFO, was het ook mogelijk om enige additionele informatie over het signaal
       te verkrijgen. Dit werd gedaan door het voorzien  een  sa_handler  signaal  afhandelaar  met  een  tweede
       argument  van  het type struct sigcontext, hetgeen dezelfde structure is als die die wordt doorgegeven in
       het uc_mcontext veld van de ucontext structure die wordt  doorgegeven  (via  een  wijzer)  in  het  derde
       argument van de sa_sigaction afhandelaar. Zie de relevante Linux kernel bronnen voor details. Dit gebruik
       is nu overbodig.

BUGS

       Tijdens  het  afleveren van een signaal met een SA_SIGINFO afhandelaar, voorziet de kernel niet altijd in
       betekenisvolle waarden voor alle velden in de siginfo_t die relevant zijn voor dat signaal.

       In kernels tot en met 2.6.13 voorkomt het opgeven van SA_NODEFER in sa_flags dat het afgeleverde  signaal
       wordt  gemaskeerd  tijdens  het  uitvoeren  van  de  afhandelaar,  maar ook voor de signalen opgegeven in
       sa_mask. Deze bug werd opgelost in kernel 2.6.14.

VOORBEELDEN

       Zie mprotect(2).

ZIE OOK

       kill(1),  kill(2),  pause(2),  pidfd_send_signal(2),  restart_syscall(2),   seccomp(2),   sigaltstack(2),
       signal(2),  signalfd(2),  sigpending(2), sigprocmask(2), sigreturn(2), sigsuspend(2), wait(2), killpg(3),
       raise(3), siginterrupt(3), sigqueue(3), sigsetops(3), sigvec(3), core(5), signal(7)

COLOFON

       Deze pagina is onderdeel van release 5.10 van het  Linux  man-pages-project.  Een  beschrijving  van  het
       project,  informatie  over  het  melden  van  bugs  en  de  nieuwste  versie  van  deze  pagina  zijn  op
       https://www.kernel.org/doc/man-pages/ te vinden.

VERTALING

       De Nederlandse vertaling van deze handleiding is geschreven door Jos  Boersema  <joshb@xs4all.nl>,  Mario
       Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>

       Deze  vertaling  is  vrije  documentatie;  lees  de GNU General Public License Version 3 of later over de
       Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.

       Indien U fouten in de vertaling van deze handleiding zou  vinden,  stuur  een  e-mail  naar  debian-l10n-
       dutch@lists.debian.org.

Linux                                           21 december 2020                                    SIGACTION(2)