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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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 ⟨⟩.