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

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)