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

NUME
execveat - execută programul în raport cu un descriptor de fișier de director
BIBLIOTECA
Biblioteca C standard (libc, -lc)
SINOPSIS
#include <linux/fcntl.h> /* Definirea constantelor AT_* */
#include <unistd.h>
int execveat(int dirfd, const char *pathname,
char *const _Nullable argv[],
char *const _Nullable envp[],
int flags);
DESCRIERE
Apelul de sistem execveat() execută programul la care se face referire prin combinația dintre dirfd și
pathname. Funcționează exact în același mod ca și execve(2), cu excepția diferențelor descrise în această
pagină de manual.
În cazul în care numele de rută dat în pathname este relativ, atunci acesta este interpretat în raport cu
directorul la care face referire descriptorul de fișier dirfd (mai degrabă decât în raport cu directorul
de lucru curent al procesului apelant, așa cum face execve(2) pentru un nume de rută relativ).
Dacă pathname este relativ și dirfd este valoarea specială AT_FDCWD, atunci pathname este interpretat
relativ la directorul de lucru curent al procesului apelant (ca execve(2)).
Dacă nume-rută este absolut, atunci fd-director este ignorat.
Dacă pathname este un șir de caractere gol și este specificat fanionul AT_EMPTY_PATH, atunci descriptorul
de fișier dirfd specifică fișierul care urmează să fie executat (adică dirfd se referă la un fișier
executabil, mai degrabă decât la un director).
Argumentul flags este o mască de biți care include zero sau mai multe dintre următoarele fanioane:
AT_EMPTY_PATH
Dacă pathname este un șir gol, operează pe fișierul la care se face referire prin dirfd (care
poate fi obținut cu ajutorul fanionului open(2) O_PATH).
AT_SYMLINK_NOFOLLOW
În cazul în care fișierul identificat de dirfd și un nume de rută pathname non-NULL este o
legătură simbolică, atunci apelul eșuează cu eroarea ELOOP.
VALOAREA RETURNATĂ
În caz de succes, execveat() returnează zero. În caz de eroare, se returnează -1, și errno este
configurată pentru a indica eroarea.
ERORI-IEȘIRE
Aceleași erori care apar pentru execve(2) pot apărea și pentru execveat(). Următoarele erori
suplimentare pot apărea pentru execveat():
pathname
este relativ, dar dirfd nu este nici AT_FDCWD, nici un descriptor de fișier valid.
EINVAL Fanion nevalid specificat în fanioane.
ELOOP Fanioanele flags includ AT_SYMLINK_NOFOLLOW, iar fișierul identificat prin dirfd și un pathname
non-NULL este o legătură simbolică.
ENOENT Programul identificat de dirfd și pathname necesită utilizarea unui program de interpretare (cum
ar fi un script care începe cu „#!”), dar descriptorul de fișier dirfd a fost deschis cu fanionul
O_CLOEXEC, ceea ce face ca fișierul de program să fie inaccesibil pentru interpretul lansat. A se
vedea secțiunea ERORI.
ENOTDIR
nume-rută este relativ și dirfd este un descriptor de fișier ce se referă la un alt fișier decât
un director.
STANDARDE
Linux.
ISTORIC
Linux 3.19, glibc 2.34.
NOTE
În plus față de motivele explicate în openat(2), apelul de sistem execveat() este, de asemenea, necesar
pentru a permite ca fexecve(3) să fie implementat pe sisteme care nu au montat sistemul de fișiere /proc.
Atunci când i se cere să execute un fișier script, argv[0] care este transmis interpretului de script
este un șir de caractere de forma /dev/fd/N sau /dev/fd/N/P, unde N este numărul descriptorului de fișier
transmis prin intermediul argumentului dirfd. Un șir de prima formă apare atunci când se utilizează
AT_EMPTY_PATH. Un șir de forma a doua apare atunci când scriptul este specificat atât prin dirfd, cât și
prin pathname; în acest caz, P este valoarea dată în pathname.
Din aceleași motive descrise la fexecve(3), modul natural de lucru atunci când se utilizează execveat()
este de a defini fanionul close-on-exec pe dirfd; (dar a se vedea secțiunea ERORI).
ERORI
Eroarea ENOENT descrisă mai sus înseamnă că nu este posibil să se definească fanionul close-on-exec pe
descriptorul de fișier dat la un apel de forma:
execveat(fd, "", argv, envp, AT_EMPTY_PATH);
Cu toate acestea, incapacitatea de a defini fanionul close-on-exec înseamnă că un descriptor de fișier
care face referire la script se pierde în scriptul în sine. Pe lângă faptul că irosește un descriptor de
fișier, această pierdere poate duce la epuizarea descriptorului de fișier în scenariile în care
scripturile utilizează recursiv execveat().
CONSULTAȚI ȘI
execve(2), openat(2), fexecve(3)
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 execveat(2)