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ć?
Różnice to kombinacje:
L vs V : czy chcesz przekazać parametry do wykonywanego programu jako
execl()
, execle()
, execlp()
iexeclpe()
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.
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.
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.
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
źródło
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.
źródło