Jakie są różne wersje exec, używane w C i C ++?

91

To są wszystkie wersje exec, które mogą być używane w C (i C ++)

execl
execle
execlp
execv
execve
execvp

Jaka jest między nimi różnica? Skąd wiesz, którego użyć?

węzeł ninja
źródło

Odpowiedzi:

181

Różnice to kombinacje:

  1. L vs V : czy chcesz przekazać parametry do wykonywanego programu jako

    • L : poszczególne parametry w wywołaniu (Lista zmiennych argumentu) execl(), execle(), execlp()iexeclpe()
    • V : w tablicy char * execv(), execve(), execvp()iexecvpe()

    Format tablicy jest przydatny, gdy liczba parametrów, które mają być przesłane do wykonywanego procesu jest zmienna - co nie jest znane z góry, więc nie można podać stałej liczby parametrów w wywołaniu funkcji.

  2. E : Wersje z „e” na końcu pozwalają dodatkowo na przekazanie tablicy znaków *, które są zestawem ciągów znaków dodanych do środowiska uruchomionych procesów przed uruchomieniem wykonywanego programu. Tak naprawdę to jeszcze jeden sposób przekazywania parametrów.

  3. P : Wersje z „p” używają zmiennej środowiskowej PATH do wyszukiwania pliku wykonywalnego o nazwie do wykonania. Wersje bez „p” wymagają bezwzględnej lub względnej ścieżki pliku poprzedzającej nazwę pliku wykonywalnego, jeśli nie znajduje się on w bieżącym katalogu roboczym.

Christo
źródło
1
Najlepsze wyjaśnienie, jakie do tej pory widziałem. Jest prawie tak krótki, jak oficjalna dokumentacja / odniesienie, ale jest tysiąc razy bardziej wyrazisty, pouczający i zrozumiały. Dziękuję Ci.
Akito
5

Opengroup to jedna z najlepszych ogólnych referencji dla podstawowych funkcji c / c ++.

Dokumentacja dla exec * znajduje się tutaj: http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html

IanNorton
źródło
2
to tak naprawdę nie odpowiada na pytanie i jest tylko linkiem.
Jean-François Fabre
Przed przyjazdem przeczytałem dokumentację na stronie, ale niewiele to pomogło. Objaśnienia są bardzo krótkie, chociaż powinny być rozbudowane. Ponadto, jeśli szukasz od zera, trudno jest znaleźć prawidłowe wyjaśnienie tego, czego szukasz.
Akito
-4

To rozszerzenie Posix biblioteki wykonawczej C. Jeśli oficjalna dokumentacja Posix jest niewystarczająca, mogę polecić książkę - Samuel P. Harbison, Guy L.Steele, 2002 "CA Reference" Strona # 416 - omów to pytanie.

bruziuz
źródło
2
Chociaż ten link może odpowiedzieć na pytanie, lepiej jest zawrzeć tutaj zasadnicze części odpowiedzi i podać link do odniesienia. Odpowiedzi zawierające tylko łącze mogą stać się nieprawidłowe, jeśli połączona strona ulegnie zmianie. - Z recenzji
lipca,
Linki do amazon i posxis standart były przydatne dla czytelnika. Ok, usunąłem linki tak, jak prosiłeś, nawet ja nie zgadzam się, że tak jest lepiej. Usuń swoje głosowanie, jeśli teraz jest bardziej czytelne.
bruziuz,
1
Nie głosowałem za twoją odpowiedzią. Właśnie zapoznałem się z Twoją odpowiedzią, która moim zdaniem była niskiej jakości. Nie chciałem usuwać linków. Chodzi o to, aby dołączyć odpowiednie fragmenty linku, które pomogą przyszłym czytelnikom natychmiast zrozumieć odpowiedź. Samo umieszczenie linków w odpowiedzi nikomu nie pomoże.
lipca