Anwendungsfälle:
Sie können den Programmnamen verwenden , um das Programmverhalten zu ändern .
Beispielsweise könnten Sie einige Symlinks zur eigentlichen Binärdatei erstellen.
Ein bekanntes Beispiel für diese Technik ist das Projekt busybox, bei dem nur eine einzige Binärdatei und viele Symlinks darauf installiert werden. (ls, cp, mv, etc). Sie tun dies , um Speicherplatz zu sparen, da ihre Ziele kleine eingebettete Geräte sind.
Dies wird auch in setarch
util-linux verwendet:
$ 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
Hier verwenden sie diese Technik im Wesentlichen , um viele doppelte Quelldateien zu vermeiden oder um die Quellen besser lesbar zu halten.
Ein weiterer Anwendungsfall wäre ein Programm, das zur Laufzeit einige Module oder Daten laden muss. Mit dem Programmpfad können Sie Module von einem Pfad relativ zum Programmspeicherort laden .
Darüber hinaus geben viele Programme Fehlermeldungen aus, einschließlich des Programmnamens .
Warum :
- Weil es eine POSIX-Konvention ist (
man 3p execve
):
argv ist ein Array von Argumenten, die an das neue Programm übergeben werden. Gemäß der Konvention sollte die erste dieser Zeichenfolgen den Dateinamen enthalten, der der ausgeführten Datei zugeordnet ist.
- Es ist C-Standard (mindestens C99 und C11):
Wenn der Wert von argc größer als Null ist, repräsentiert der String, auf den argv [0] zeigt, den Programmnamen. argv [0] [0] muss das Nullzeichen sein, wenn der Programmname in der Hostumgebung nicht verfügbar ist.
Beachten Sie, dass der C-Standard "Programmname" und nicht "Dateiname" sagt.