Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       pidfd_getfd - obține un duplicat al descriptorului de fișier al unui alt proces

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #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).

DESCRIERE

       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)).

VALOAREA RETURNATĂ

       Î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.

ERORI-IEȘIRE

       EBADF  pidfd nu este un descriptor de fișier PID valid.

       EBADF  targetfd nu este un descriptor de fișier deschis în procesul la care face referire pidfd.

       EINVAL fanioane(flags) nu este 0.

       EMFILE A fost atinsă limita per-proces a numărului  de  descriptori  de  fișiere  deschise  (a  se  vedea
              descrierea lui RLIMIT_NOFILE în getrlimit(2)).

       ENFILE Limita la nivel de sistem a numărului total de fișiere deschise a fost atinsă.

       EPERM  Procesul  apelant  nu a avut permisiuni PTRACE_MODE_ATTACH_REALCREDS (a se vedea ptrace(2)) asupra
              procesului la care se face referire prin pidfd.

       ESRCH  Procesul la care se face referire prin pidfd nu există (adică s-a încheiat și a fost așteptat).

STANDARDE

       Linux.

ISTORIC

       Linux 5.6.

NOTE

       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:

       •  Pentru a transmite un descriptor de fișier utilizând un mesaj SCM_RIGHTS, cele două procese trebuie să
          stabilească mai întâi o conexiune de tip soclu de domeniu UNIX.

       •  Utilizarea  lui SCM_RIGHTS necesită cooperare din partea procesului al cărui descriptor de fișier este
          copiat.  În schimb, o astfel de cooperare nu este necesară atunci când se utilizează pidfd_getfd().

       •  Capacitatea de a utiliza pidfd_getfd() este restricționată de o  verificare  a  modului  de  acces  la
          ptrace PTRACE_MODE_ATTACH_REALCREDS.

CONSULTAȚI ȘI

       clone3(2), dup(2), kcmp(2), pidfd_open(2)

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.

Pagini de manual de Linux 6.9.1                    2 mai 2024                                     pidfd_getfd(2)