Користувачі:
Ви можете використовувати ім'я програми для зміни поведінки програми .
Наприклад, ви можете створити кілька посилань на фактичний бінарний файл.
Один з відомих прикладів, коли використовується ця методика, - проект зайнятої скриньки, який встановлює лише одне єдине бінарне і безліч посилань на нього. (ls, cp, mv тощо). Вони роблять це для економії місця для зберігання, оскільки їх цілі - це невеликі вбудовані пристрої.
Це також використовується в 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
Тут вони використовують цю техніку, щоб уникнути багатьох повторюваних вихідних файлів або просто зберегти джерела більш читабельними.
Іншим випадком використання буде програма, яка потребує завантаження деяких модулів або даних під час виконання. Наявність програмного шляху дозволяє вам завантажувати модулі з контуру відносно місця розташування програми .
Крім того, багато програм друкують повідомлення про помилки, включаючи назву програми .
Чому :
- Оскільки це POSIX-конвенція (
man 3p execve
):
argv - це масив аргументів рядків, переданих новій програмі. За умовою, перший із цих рядків повинен містити ім'я файлу, пов'язане з файлом, який виконується.
- Це стандарт C (принаймні C99 і C11):
Якщо значення argc більше нуля, рядок, на який вказується argv [0], представляє назву програми; argv [0] [0] має бути нульовим символом, якщо ім'я програми недоступне в середовищі хоста.
Зверніть увагу, що в стандарті C написано "ім'я програми", а не "ім'я файлу".