Przypadków użycia:
Możesz użyć nazwy programu aby zmienić zachowanie programu .
Na przykład możesz utworzyć dowiązania symboliczne do rzeczywistego pliku binarnego.
Jednym znanym przykładem zastosowania tej techniki jest projekt busybox, który instaluje tylko jeden plik binarny i wiele dowiązań symbolicznych do niego. (ls, cp, mv itp.). Oni to robią aby zaoszczędzić miejsce, ponieważ ich celem są małe urządzenia wbudowane.
Jest to również używane w programie setarch
util-linux:
$ ls -l /usr/bin/ | grep setarch
lrwxrwxrwx 1 root root 7 2015-11-05 02:15 i386 -> setarch
lrwxrwxrwx 1 root root 7 2015-11-05 02:15 linux32 -> setarch
lrwxrwxrwx 1 root root 7 2015-11-05 02:15 linux64 -> setarch
-rwxr-xr-x 1 root root 14680 2015-10-22 16:54 setarch
lrwxrwxrwx 1 root root 7 2015-11-05 02:15 x86_64 -> setarch
Tutaj używają tej techniki w zasadzie aby uniknąć wielu zduplikowanych plików źródłowych lub po prostu, aby źródła były bardziej czytelne.
Innym przykładem użycia może być program, który musi załadować niektóre moduły lub dane w czasie wykonywania. Posiadanie ścieżki programu pozwala ładowanie modułów ze ścieżki względem lokalizacji programu .
Ponadto wiele programów drukuje komunikaty o błędach, w tym nazwę programu .
Dlaczego :
- Ponieważ jest to konwencja POSIX (
man 3p execve
):
argv to tablica ciągów argumentów przekazywanych do nowego programu. Zgodnie z konwencją pierwszy z tych ciągów powinien zawierać nazwę pliku powiązaną z wykonywanym plikiem.
- Jest to standard C (co najmniej C99 i C11):
Jeśli wartość argc jest większa od zera, ciąg wskazany przez argv [0] reprezentuje nazwę programu; argv [0] [0] będzie znakiem pustym, jeśli nazwa programu nie jest dostępna w środowisku hosta.
Zauważ, że C Standard mówi „nazwa programu”, a nie „nazwa pliku”.