Gunakan kasing:
Anda dapat menggunakan nama program untuk mengubah perilaku program .
Misalnya Anda bisa membuat beberapa symlink ke biner yang sebenarnya.
Salah satu contoh terkenal di mana teknik ini digunakan adalah proyek busybox yang menginstal hanya satu biner tunggal dan banyak symlink ke sana. (ls, cp, mv, dll). Mereka melakukannya untuk menghemat ruang penyimpanan karena target mereka adalah perangkat tertanam kecil.
Ini juga digunakan di setarch
dari 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
Di sini mereka menggunakan teknik ini pada dasarnya untuk menghindari banyak file sumber duplikat atau hanya agar sumbernya lebih mudah dibaca.
Kasus penggunaan lain adalah program yang perlu memuat beberapa modul atau data saat runtime. Memiliki jalur program membuat Anda dapat memuat modul dari jalur relatif ke lokasi program .
Apalagi banyak program mencetak pesan kesalahan termasuk nama program .
Mengapa :
- Karena itu adalah konvensi POSIX (
man 3p execve
):
argv adalah larik string argumen yang diteruskan ke program baru. Secara konvensi, string pertama harus berisi nama file yang terkait dengan file yang dieksekusi.
- Ini standar C (setidaknya C99 dan C11):
Jika nilai argc lebih besar dari nol, string yang ditunjukkan oleh argv [0] mewakili nama program; argv [0] [0] akan menjadi karakter nol jika nama program tidak tersedia dari lingkungan host.
Perhatikan Standar C mengatakan "nama program" bukan "nama file".