W tym artykule mówię o rodzinie funkcji Exec i pokazuję, jak korzystać z każdej z tych funkcji rodzinnych w C. Więc zacznijmy.
C Funkcje systemowe w Exec Family:
Rodziny funkcji exec są zdefiniowane w nagłówku unistd.H. Musisz więc użyć tego nagłówka w programie C, w którym chcesz korzystać z tych funkcji.
Dostępne funkcje EXEC wraz z ich parametrami funkcji podano poniżej:
Zobaczmy, co robi każda z tych funkcji i jak z nich korzystać.
execl () Funkcja systemowa:
W funkcji systemowej execl () przebiega ścieżka pliku binarnego wykonywalnego (i.mi. /bin/ls) jako pierwszy i drugi argument. Następnie argumenty (ja.mi. -LH, /dom) że chcesz przejść do elementu wykonywalnego, a następnie ZERO. Następnie funkcja systemu execl () uruchamia polecenie i drukuje wyjście. Jeśli wystąpi jakikolwiek błąd, execl () zwraca -1. W przeciwnym razie nic nie zwraca.
Przykład funkcji systemowej execl () podano poniżej:
#włączaćProwadziłem ls -lh /dom Polecenie za pomocą funkcji systemowej execl (). Jak widać, wyświetlany jest prawidłowy wynik.
funkcja systemu execlp ():
execl () nie używa ŚCIEŻKA Zmienna środowiskowa. Tak więc pełna ścieżka pliku wykonywalnego jest wymagana do uruchomienia go z execl (). execlp () używa zmiennej środowiska ścieżki. Tak więc, jeśli plik wykonywalny lub polecenie jest dostępne na ścieżce, polecenie lub nazwa pliku wystarczy, aby go uruchomić, pełna ścieżka nie jest potrzebna.
Możemy przepisać przykład execl () za pomocą funkcji systemu execlp () w następujący sposób:
#włączaćPrzekazałem tylko nazwę polecenia LS, nie pełna ścieżka /bin/ls. Jak widać, mam takie samo wyjście, jak poprzednio.
EXECV () Funkcja systemowa:
W funkcji execl () parametry pliku wykonywalnego są przekazywane do funkcji jako różne argumenty. Za pomocą execV () możesz przekazać wszystkie parametry w zerowej tablicy zakończonej Argv. Pierwszym elementem tablicy powinien być ścieżka pliku wykonywalnego. W przeciwnym razie funkcja execV () działa tak samo jak funkcja execl ().
Możemy przepisać przykład execl () w następujący sposób:
#włączaćJak widać, otrzymuję prawidłowe wyjście.
EXECVP () Funkcja systemowa:
Działa w taki sam sposób, jak funkcja systemu execv (). Ale stosuje się zmienną środowiskową ścieżki. Tak więc pełna ścieżka pliku wykonywalnego nie jest wymagana, tak jak w execlp ().
Możemy przepisać przykład execV () w następujący sposób:
#włączaćJak widać, wyświetlane jest prawidłowe wyjście.
EXECLE () Funkcja systemowa:
Działa tak jak Execl (), ale możesz podać własne zmienne środowiskowe wraz z tym. Zmienne środowiskowe są przekazywane jako tablica Envp. Ostatni element Envp tablica powinna być null. Wszystkie pozostałe elementy zawierają pary wartości kluczowej jako ciąg.
Przykład funkcji systemowej execle () podano poniżej:
#włączaćMiałem dwie zmienne środowiskowe Nazwa hosta I PORT do funkcji execle (). Jak widać, mogę uzyskać do nich dostęp z wykonywalny /bin/bash.
Execve () Funkcja systemowa:
Podobnie jak execle () możesz dostarczyć własne zmienne środowiskowe wraz z execve (). Możesz także przekazać argumenty jako tablice, tak jak w ExecV ().
Przykład execle () można przepisać w następujący sposób:
#włączaćJak widać, otrzymujemy to samo wyjście, co w przykładzie execle ().
Tak więc używasz rodziny funkcji exec w C do programowania systemu w Linux. Dziękujemy za przeczytanie tego artykułu.