execveat(2) System Calls Manual execveat(2) NUME execveat - executa programul in raport cu un descriptor de fiier de director BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include /* Definirea constantelor AT_* */ #include int execveat(int dirfd, const char *path, char *const _Nullable argv[], char *const _Nullable envp[], int flags); DESCRIERE Apelul de sistem execveat() executa programul la care se face referire prin combinaia dintre dirfd i path. Funcioneaza exact in acelai mod ca i execve(2), cu excepia diferenelor descrise in aceasta pagina de manual. In cazul in care ruta data in path este relativa, atunci acesta este interpretata in raport cu directorul la care face referire descriptorul de fiier dirfd (i nu in raport cu directorul de lucru curent al procesului apelant, aa cum face execve(2) pentru un nume de ruta relativ). Daca ruta path este relativa i dirfd este valoarea speciala AT_FDCWD, atunci ruta path este interpretata relativ la directorul de lucru curent al procesului apelant (ca execve(2)). Daca ruta este absoluta, atunci fd-director este ignorat. Daca path este un ir de caractere gol i este specificat fanionul AT_EMPTY_PATH, atunci descriptorul de fiier dirfd specifica fiierul care urmeaza sa fie executat (adica dirfd se refera la un fiier executabil, i nu la un director). Argumentul flags este o masca de bii care include zero sau mai multe dintre urmatoarele fanioane: AT_EMPTY_PATH Daca path este un ir gol, opereaza pe fiierul la care se face referire prin dirfd (care poate fi obinut cu ajutorul fanionului open(2) O_PATH). AT_SYMLINK_NOFOLLOW In cazul in care fiierul identificat de dirfd i o ruta path non-NULL este o legatura simbolica, atunci apelul eueaza cu eroarea ELOOP. VALOAREA RETURNATA In caz de succes, execveat() returneaza zero. In caz de eroare, se returneaza -1, i errno este configurata pentru a indica eroarea. ERORI-IEIRE Aceleai erori care apar pentru execve(2) pot aparea i pentru execveat(). Urmatoarele erori suplimentare pot aparea pentru execveat(): ruta este relativ, dar dirfd nu este nici AT_FDCWD, nici un descriptor de fiier valid. EINVAL Fanion nevalid specificat in fanioane. ELOOP Fanioanele flags includ AT_SYMLINK_NOFOLLOW, iar fiierul identificat prin dirfd i o ruta path non-NULL este o legatura simbolica. ENOENT Programul identificat de dirfd i path necesita utilizarea unui program de interpretare (cum ar fi un script care incepe cu ,,#!"), dar descriptorul de fiier dirfd a fost deschis cu fanionul O_CLOEXEC, ceea ce face ca fiierul de program sa fie inaccesibil pentru interpretul lansat. A se vedea seciunea ERORI. ENOTDIR ruta este relativa i dirfd este un descriptor de fiier ce se refera la un alt fiier decat un director. STANDARDE Linux. ISTORIC Linux 3.19, glibc 2.34. NOTE In plus faa de motivele explicate in openat(2), apelul de sistem execveat() este, de asemenea, necesar pentru a permite ca fexecve(3) sa fie implementat pe sisteme care nu au montat sistemul de fiiere /proc. Atunci cand i se cere sa execute un fiier 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 numarul descriptorului de fiier transmis prin intermediul argumentului dirfd. Un ir de prima forma apare atunci cand se utilizeaza AT_EMPTY_PATH. Un ir de forma a doua apare atunci cand scriptul este specificat atat prin dirfd, cat i prin path; in acest caz, P este valoarea data in path. Din aceleai motive descrise la fexecve(3), modul natural de lucru atunci cand se utilizeaza execveat() este de a defini fanionul close-on-exec pe dirfd; (dar a se vedea seciunea ERORI). ERORI Eroarea ENOENT descrisa mai sus inseamna ca nu este posibil sa se defineasca fanionul close-on-exec pe descriptorul de fiier dat la un apel de forma: execveat(fd, "", argv, envp, AT_EMPTY_PATH); Cu toate acestea, incapacitatea de a defini fanionul close-on-exec inseamna ca un descriptor de fiier care face referire la script se pierde in scriptul in sine. Pe langa faptul ca irosete un descriptor de fiier, aceasta pierdere poate duce la epuizarea descriptorului de fiier in scenariile in care scripturile utilizeaza recursiv execveat(). CONSULTAI I execve(2), openat(2), fexecve(3) 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.18 8 februarie 2026 execveat(2)