Skip to main content

Wszystko o poleceniu Linux / Unix: execvp

SurivNet | How to write your own Linux shell (Czerwiec 2026)

SurivNet | How to write your own Linux shell (Czerwiec 2026)
Anonim

Theexec Rodzina funkcji zastępuje bieżący obraz procesu nowym obrazem procesu. Funkcje opisane tutaj są front-endami dla funkcjiexecve(2).

Początkowym argumentem dla tych funkcji jest ścieżka do pliku, który ma zostać wykonany.

The const char * arg i kolejne elipsy wexecl, execlp, iexecle funkcje mogą być uważane za arg0 , arg1 , …, argn . Razem opisują listę jednego lub więcej wskaźników do zakończonych znakiem null łańcuchów, które reprezentują listę argumentów dostępnych dla wykonywanego programu. Pierwszy argument, według konwencji, powinien wskazywać na nazwę pliku powiązanego z wykonywanym plikiem. Lista argumentów musi być zakończone przezZERO wskaźnik.

Theexecv iexecvp funkcje udostępniają tablicę wskaźników do zakończonych znakiem null łańcuchów, które reprezentują listę argumentów dostępnych dla nowego programu. Pierwszy argument, według konwencji, powinien wskazywać na nazwę pliku powiązanego z wykonywanym plikiem. Tablica wskaźników musi być zakończone przezZERO wskaźnik.

Theexecle Funkcja określa środowisko wykonanego procesu, postępując zgodnie zZEROwskaźnik kończący listę argumentów na liście parametrów lub wskaźnik do tablicy argv z dodatkowym parametrem. Ten dodatkowy parametr jest tablicą wskaźników do zakończonych znakiem NUL łańcuchów i musi być zakończone przezZERO wskaźnik. Pozostałe funkcje pobierają środowisko dla nowego obrazu procesu ze zmiennej zewnętrznej otaczać w obecnym procesie.

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

Funkcjeexeclp iexecvp powielą działania powłoki podczas wyszukiwania pliku wykonywalnego, jeśli podana nazwa pliku nie zawiera znaku ukośnika (/). Ścieżka wyszukiwania to ścieżka określona w środowisku przez ścieżkęŚCIEŻKA zmienna. Jeśli ta zmienna nie zostanie określona, ​​używana jest domyślna ścieżka ``: / bin: / usr / bin ''. Ponadto niektóre błędy są traktowane specjalnie.

Jeśli odmówiono dostępu do pliku (próbaexecve zwróconyEACCES), funkcje te będą nadal przeszukiwać resztę ścieżki wyszukiwania. Jeśli nie zostanie znaleziony żaden inny plik, powrócą one ze zmienną globalną errno UstawićEACCES.

Jeśli nagłówek pliku nie zostanie rozpoznany (próbaexecve zwróconyENOEXEC), te funkcje wykonają powłokę ze ścieżką pliku jako pierwszym argumentem. (Jeśli ta próba się nie powiedzie, dalsze wyszukiwanie nie zostanie wykonane.)

Zwróć wartość

Jeśli którykolwiek zexec funkcja zwraca, wystąpił błąd. Wartością zwracaną jest -1, a zmienna globalna errno zostanie ustawiony, aby wskazać błąd.

Ważny: Użyj mężczyzna dowództwo ( % mężczyzna ), aby zobaczyć, jak polecenie jest używane na danym komputerze.

Imię

execl, execlp, execle, execv, execvp - wykonaj plik

Streszczenie

#zawierać

extern char ** environ;

int execl (const char * ścieżka , const char * arg , …); int execlp (const char * plik , const char * arg , …); int execle (const char * ścieżka , const char * arg , …, char * const envp ); int execv (const char * ścieżka , char * const argv ); int execvp (const char * plik , char * const argv );