Provided by: manpages-pl-dev_20060617-1_all bug

NAZWA

       execl, execlp, execle, execv, execvp - uruchomienie pliku

SKŁADNIA

       #include <unistd.h>

       extern char **environ;

       int execl(const char *path, const char *arg, ...);
       int execlp(const char *file, const char *arg, ...);
       int  execle(const  char  *path,  const  char  *arg  , ..., char * const
       envp[]);
       int execv(const char *path, char *const argv[]);
       int execvp(const char *file, char *const argv[]);

OPIS

       Rodzina funkcji exec  zastępuje  w  pamięci  obraz  aktualnego  procesu
       obrazem  nowego  procesu.  Funkcje  opisane na tej stronie man są tylko
       nakładkami dla funkcji execve(2).   (Dodatkowych  informacji  na  temat
       nadpisywania aktualnego procesu szukaj na stronie man tej funkcji.)

       Pierwszym  argumentem  tych funkcji jest ścieżka do pliku, który ma być
       uruchomiony.

       Kolejne wyrażenia const char *arg w funkcjach execl, execlp,  i  execle
       można  traktować  jako  arg0, arg1, ..., argn.  Razem opisują one listę
       jednego lub więcej wskaźników do zakończonych  znakiem  NUL  łańcuchów,
       reprezentujących    listę   argumentów   udostępnoianych   wykonywanemu
       programowi. Pierwszy argument, zgodnie z konwencją, powinien  wskazywać
       na  nazwę  pliku powiązaną z wykonywanym plikiem. Lista argumentów musi
       być zakończona wskaźnikiem NULL.

       Funkcje  execv  oraz  execvp   udostępniają   tablicę   wskaźników   do
       zakończonych znakami NUL łańcuchów, które reprezentują listę argumentów
       dostępnych dla wykonywanego programu.   Pierwszy  argument,  zgodnie  z
       konwencją,  powinien  wskazywać  na nazwę pliku powiązaną z wykonywanym
       plikiem. Tablica wskaźników musi być zakończona wskaźnikiem NULL.

       Funkcja  execle  dodatkowo  określa  środowisko  wykonywanego   procesu
       poprzez  dodanie po wskaźniku NULL, kończącym listę argumentów w liście
       parametrów lub po tablicy argv dodatkowego  argumentu.  Tym  dodatkowym
       argumentem   jest   tablica  wskaźników  do  zakończonych  znakami  NUL
       łańcuchów, która to  tablica  musi  być  zakończona  wskaźnikiem  NULL.
       Pozostałe funkcje pobierają środowisko dla nowego procesu z zewnętrznej
       zmiennej environ aktualnego procesu.

       Niektóre z tych funkcji mają specyficzną semantykę.

       Funkcje execlp oraz execvp  wykonują  zadania  powłoki  szukając  pliku
       wykonywalnego,  jeśli  nazwa  pliku  nie  zawiera  znaku  ukośnika (/).
       Ścieżka przeszukiwania to ścieżka podana w zmiennej środowiskowej PATH.
       Jeśli  zmienna  ta  nie  istnieje,  przyjmowana  jest  domyślna ścieżka
       ``:/bin:/usr/bin''.  Dodatkowo pewne błędy traktowane są odmiennie.

       Jeśli dostęp do pliku  został  zabroniony  (wywołanie  execve  zwróciło
       EACCES),  funkcje te będą przeszukiwać resztę ścieżki. Jeśli jednak nie
       odnajdą innego pliku, powrócą  i  zmienią  wartość  zmiennej  globalnej
       errno na EACCES.

       Jeśli   nagłówek  nie  zostanie  rozpoznany  (wywołanie  execve  zwróci
       ENOEXEC), funkcje te spróbują uruchomić powłokę  ze  ścieżką  do  pliku
       jako  pierwszym  argumentem.  (Jeśli  i  ta  próba  się  nie powiedzie,
       przeszukiwanie jest zakończone.)

WARTOŚĆ ZWRACANA

       Jeśli dowolna z funkcji exec powróci,  oznacza  to  że  nastąpił  błąd.
       Zwracana  jest  wartość  -1 i ustawiana jest zmienna globalna errno aby
       wskazać błąd.

PLIKI

       /bin/sh

BŁĘDY

       Każda z tych funkcji może zakończyć się niepowodzeniem i  ustawić  jako
       wartość   errno   dowolny  błąd  określony  dla  funkcji  bibliotecznej
       execve(2).

ZOBACZ TAKŻE

       sh(1), execve(2), fork(2), environ(5), ptrace(2)

KOMPATYBILNOŚĆ

       W niektórych systemach domyślna ścieżka (używana,  gdy  środowisko  nie
       zawiera  zmiennej  PATH) zawiera aktualny katalog na samym końcu listy,
       po /bin oraz /usr/bin, aby zapobiec koniom trojańskim.  Linux  korzysta
       tu  z tradycyjnej domyślnej ścieżki z aktualnym katalogiem na początku.

       Zachowanie execlp oraz execvp w przypadku  wystąpienia  błędów  podczas
       uruchamiania   pliku  jest  przyjęte  jako  tradycyjne,  ale  nie  jest
       udokumentowane przez  standard  POSIX.  BSD  (a  być  może  także  inne
       systemy)  po  napotkaniu  błędu  ETXTBSY  czeka  przez chwilę i próbuje
       ponownie. Linux traktuje to jako błąd i powraca natychmiast.

       Tradycyjnie, funkcje execlp  oraz  execvp  ignorowały  wszystkie  błędy
       oprócz  podanych powyżej, ENOMEM i E2BIG, po których powracały. Obecnie
       powracają jeśli wystąpi dowolny błąd inny od opisanych powyżej.

ZGODNE Z

       Funkcje  execl,  execv,  execle,  execlp  oraz  execvp  są  zgodne   ze
       standardem IEEE Std1003.1-88 (`POSIX.1'').