Provided by:
manpages-pl-dev_20060617-1_all 
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'').