pidfd_getfd(2) | System Calls Manual | pidfd_getfd(2) |
pidfd_getfd - obține un duplicat al descriptorului de fișier al unui alt proces
Biblioteca C standard (libc, -lc)
#include <sys/syscall.h> /* Definirea constantelor SYS_* */ #include <unistd.h>
int syscall(SYS_pidfd_getfd, int pidfd, int targetfd, unsigned int flags);
Notă: glibc nu oferă nici o funcție de învăluire pentru pidfd_getfd(), fiind necesară utilizarea syscall(2).
Apelul de sistem pidfd_getfd() alocă un nou descriptor de fișier în procesul apelant. Acest nou descriptor de fișier este un duplicat al unui descriptor de fișier existent, targetfd, în procesul la care se face referire prin descriptorul de fișier PID pidfd.
Descriptorul de fișier duplicat se referă la aceeași descriere de fișier deschis (a se vedea open(2)) ca și descriptorul de fișier original în procesul la care se referă pidfd. Astfel, cei doi descriptori de fișiere au în comun fanioanele de stare a fișierului și poziția fișierului. În plus, operațiile asupra obiectului de fișier subiacent (de exemplu, atribuirea unei adrese unui obiect soclu utilizând bind(2)) pot fi efectuate în mod egal prin intermediul descriptorului de fișier duplicat.
Fanionul close-on-exec (FD_CLOEXEC; a se vedea fcntl(2)) este activat pe descriptorul de fișier returnat de pidfd_getfd().
Argumentul flags este rezervat pentru utilizare viitoare. În prezent, acesta trebuie să fie specificat ca fiind 0.
Permisiunea de a duplica descriptorul de fișier al unui alt proces este guvernată de o verificare PTRACE_MODE_ATTACH_REALCREDS a modului de acces ptrace (a se vedea ptrace(2)).
În caz de reușită, pidfd_getfd() returnează un descriptor de fișier (un număr întreg nenegativ). În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.
pidfd_getfd() a apărut pentru prima dată în Linux 5.6.
pidfd_getfd() este specific pentru Linux.
Pentru o descriere a descriptorilor de fișiere PID, a se vedea pidfd_open(2).
Efectul pidfd_getfd() este similar cu utilizarea mesajelor SCM_RIGHTS descrise în unix(7), dar diferă în următoarele privințe:
clone3(2), dup(2), kcmp(2), pidfd_open(2)
Traducerea în limba română a acestui manual a fost creată 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.
5 februarie 2023 | Pagini de manual de Linux 6.03 |