Trường hợp sử dụng:
Bạn có thể sử dụng tên chương trình để thay đổi hành vi của chương trình .
Ví dụ, bạn có thể tạo một số liên kết tượng trưng cho nhị phân thực tế.
Một ví dụ nổi tiếng trong đó kỹ thuật này được sử dụng là dự án busybox chỉ cài đặt một nhị phân duy nhất và nhiều liên kết tượng trưng cho nó. (ls, cp, mv, v.v.). Họ đang làm điều đó để tiết kiệm không gian lưu trữ vì mục tiêu của họ là các thiết bị nhúng nhỏ.
Điều này cũng được sử dụng trong setarch
từ linux-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
Ở đây họ đang sử dụng kỹ thuật này về cơ bản để tránh nhiều tệp nguồn trùng lặp hoặc chỉ để giữ cho các nguồn dễ đọc hơn.
Một trường hợp sử dụng khác sẽ là một chương trình cần tải một số mô-đun hoặc dữ liệu khi chạy. Có đường dẫn chương trình giúp bạn có thể tải các mô-đun từ một đường dẫn liên quan đến vị trí chương trình .
Hơn nữa, nhiều chương trình in thông báo lỗi bao gồm tên chương trình .
Tại sao :
- Bởi vì đó là quy ước POSIX (
man 3p execve
):
argv là một chuỗi các chuỗi đối số được truyền cho chương trình mới. Theo quy ước, chuỗi đầu tiên trong số này phải chứa tên tệp được liên kết với tệp đang được thực thi.
- Đó là tiêu chuẩn C (ít nhất là C99 và C11):
Nếu giá trị của argc lớn hơn 0, chuỗi được trỏ bởi argv [0] đại diện cho tên chương trình; argv [0] [0] sẽ là ký tự null nếu tên chương trình không có sẵn từ môi trường máy chủ.
Lưu ý C Standard cho biết "tên chương trình" không phải "tên tệp".