table of contents
- unstable 4.26.0-1
rt_sigqueueinfo(2) | System Calls Manual | rt_sigqueueinfo(2) |
NUME¶
rt_sigqueueinfo, rt_tgsigqueueinfo - pune în coada de așteptare un semnal și date
BIBLIOTECA¶
Biblioteca C standard (libc, -lc)
SINOPSIS¶
#include <linux/signal.h> /* Definirea constantelor SI_* */ #include <sys/syscall.h> /* Definirea constantelo SYS_* */ #include <unistd.h>
int syscall(SYS_rt_sigqueueinfo, pid_t tgid, int sig, siginfo_t *info); int syscall(SYS_rt_tgsigqueueinfo, pid_t tgid, pid_t tid, int sig, siginfo_t *info);
Notă: Nu există funcții de învăluire glibc pentru aceste apeluri de sistem; consultați NOTE.
DESCRIERE¶
Apelurile de sistem rt_sigqueueinfo() și rt_tgsigqueueinfo() sunt interfețele de nivel scăzut utilizate pentru a trimite un semnal plus date către un proces sau un fir de execuție. Receptorul semnalului poate obține datele însoțitoare prin stabilirea unui gestionar de semnal cu indicatorul sigaction(2) SA_SIGINFO.
Aceste apeluri de sistem nu sunt destinate utilizării directe de către aplicații; ele sunt furnizate pentru a permite implementarea sigqueue(3) și pthread_sigqueue(3).
Apelul de sistem rt_sigqueueinfo() trimite semnalul sig către grupul de fire cu ID-ul tgid; (termenul „grup de fire” este sinonim cu „proces”, iar tid corespunde ID-ului tradițional de proces UNIX). Semnalul va fi transmis unui membru arbitrar al grupului de fire de execuție (adică unuia dintre firele de execuție care nu blochează în prezent semnalul).
Argumentul info specifică datele care trebuie să însoțească semnalul. Acest argument este un indicator către o structură de tip siginfo_t, descrisă în sigaction(2) (și definită prin includerea <sigaction.h>). Apelantul trebuie să definească următoarele câmpuri în această structură:
- si_code
- Acesta ar trebui să fie unul dintre codurile SI_* din fișierul sursă al nucleului Linux include/asm-generic/siginfo.h. Dacă semnalul este trimis către orice alt proces decât apelantul însuși, se aplică următoarele restricții:
- •
- Codul nu poate fi o valoare mai mare sau egală cu zero. În special, nu poate fi SI_USER, care este utilizat de nucleu pentru a indica un semnal trimis de kill(2), și nici nu poate fi SI_KERNEL, care este utilizat pentru a indica un semnal generat de nucleu.
- •
- Codul nu poate fi (începând cu Linux 2.6.39) SI_TKILL, care este utilizat de nucleu pentru a indica un semnal trimis utilizând tgkill(2).
- si_pid
- Acesta trebuie să fie definit la un ID de proces, de obicei ID-ul de proces al expeditorului.
- si_uid
- Acesta trebuie definit la un ID de utilizator, de obicei ID-ul de utilizator real al emitentului.
- si_value
- Acest câmp conține datele utilizatorului care trebuie să însoțească semnalul. Pentru mai multe informații, consultați descrierea ultimului argument (union sigval) din sigqueue(3).
Pe plan intern, nucleul stabilește câmpul si_signo la valoarea specificată în sig, astfel încât receptorul semnalului să poată obține și numărul semnalului prin intermediul acestui câmp.
Apelul de sistem rt_tgsigqueueinfo() este similar cu rt_sigqueueinfo(), dar trimite semnalul și datele către un singur fir specificat de combinația tgid, un ID de grup de fire și tid, un fir din acel grup de fire.
VALOAREA RETURNATö
În caz de succes, aceste apeluri de sistem returnează 0. În caz de eroare, acestea returnează -1 și errno este configurată pentru a indica eroarea.
ERORI-IEȘIRE¶
- EAGAIN
- A fost atinsă limita de semnale care pot fi puse în coadă. A se vedea signal(7) pentru informații suplimentare.
- EINVAL
- sig, tgid sau tid nu a fost valid.
- EPERM
- Apelantul nu are permisiunea de a trimite semnalul către țintă. Pentru permisiunile necesare, consultați kill(2).
- EPERM
- tgid specifică un alt proces decât apelantul și info->si_code nu este valid.
- ESRCH
- rt_sigqueueinfo(): Nu a fost găsit niciun grup de fire care să corespundă tgid.
rt_tgsigqueinfo(): Nu a fost găsit niciun fir care să corespundă tgid și tid.
STANDARDE¶
Linux.
ISTORIC¶
- rt_sigqueueinfo()
- Linux 2.2.
- rt_tgsigqueueinfo()
- Linux 2.6.31.
NOTE¶
Deoarece aceste apeluri de sistem nu sunt destinate utilizării în aplicații, nu există funcții de învăluire glibc; utilizați syscall(2) în cazul puțin probabil în care doriți să le apelați direct.
Ca și în cazul kill(2), semnalul nul (0) poate fi utilizat pentru a verifica dacă procesul sau firul specificat există.
CONSULTAȚI ȘI¶
kill(2), pidfd_send_signal(2), sigaction(2), sigprocmask(2), tgkill(2), pthread_sigqueue(3), sigqueue(3), signal(7)
TRADUCERE¶
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.
2 mai 2024 | Pagini de manual de Linux 6.9.1 |