pidfd_getfd(2) System Calls Manual pidfd_getfd(2) NUME pidfd_getfd - obine un duplicat al descriptorului de fiier al unui alt proces BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include /* Definirea constantelor SYS_* */ #include int syscall(SYS_pidfd_getfd, int pidfd, int targetfd, unsigned int flags); Nota: glibc nu ofera nici o funcie de invaluire pentru pidfd_getfd(), fiind necesara utilizarea syscall(2). DESCRIERE Apelul de sistem pidfd_getfd() aloca un nou descriptor de fiier in procesul apelant. Acest nou descriptor de fiier este un duplicat al unui descriptor de fiier existent, targetfd, in procesul la care se face referire prin descriptorul de fiier PID pidfd. Descriptorul de fiier duplicat se refera la aceeai descriere de fiier deschis (a se vedea open(2)) ca i descriptorul de fiier original in procesul la care se refera pidfd. Astfel, cei doi descriptori de fiiere au in comun fanioanele de stare a fiierului i poziia fiierului. In plus, operaiile asupra obiectului de fiier subiacent (de exemplu, atribuirea unei adrese unui obiect soclu utilizand bind(2)) pot fi efectuate in mod egal prin intermediul descriptorului de fiier duplicat. Fanionul close-on-exec (FD_CLOEXEC; a se vedea fcntl(2)) este activat pe descriptorul de fiier returnat de pidfd_getfd(). Argumentul flags este rezervat pentru utilizare viitoare. In prezent, acesta trebuie sa fie specificat ca fiind 0. Permisiunea de a duplica descriptorul de fiier al unui alt proces este guvernata de o verificare PTRACE_MODE_ATTACH_REALCREDS a modului de acces ptrace (a se vedea ptrace(2)). VALOAREA RETURNATA In caz de reuita, pidfd_getfd() returneaza un descriptor de fiier (un numar intreg nenegativ). In caz de eroare, se returneaza -1, iar errno este configurata pentru a indica eroarea. ERORI-IEIRE EBADF pidfd nu este un descriptor de fiier PID valid. EBADF targetfd nu este un descriptor de fiier deschis in procesul la care face referire pidfd. EINVAL fanioane nu este 0. EMFILE A fost atinsa limita per-proces a numarului de descriptori de fiiere deschise (a se vedea descrierea lui RLIMIT_NOFILE in getrlimit(2)). ENFILE Limita la nivel de sistem a numarului total de fiiere deschise a fost atinsa. 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 exista (adica s-a incheiat i a fost ateptat). STANDARDE Linux. ISTORIC Linux 5.6. NOTE Pentru o descriere a descriptorilor de fiiere PID, a se vedea pidfd_open(2). Efectul pidfd_getfd() este similar cu utilizarea mesajelor SCM_RIGHTS descrise in unix(7), dar difera in urmatoarele privine: o Pentru a transmite un descriptor de fiier utilizand un mesaj SCM_RIGHTS, cele doua procese trebuie sa stabileasca mai intai o conexiune de tip soclu de domeniu UNIX. o Utilizarea lui SCM_RIGHTS necesita cooperare din partea procesului al carui descriptor de fiier este copiat. In schimb, o astfel de cooperare nu este necesara atunci cand se utilizeaza pidfd_getfd(). o Capacitatea de a utiliza pidfd_getfd() este restricionata de o verificare a modului de acces la ptrace PTRACE_MODE_ATTACH_REALCREDS. CONSULTAI I clone3(2), dup(2), kcmp(2), pidfd_open(2) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 pidfd_getfd(2)