사용 사례:
프로그램 이름 을 사용하여 프로그램 동작을 변경할 수 있습니다 .
예를 들어 실제 바이너리에 대한 심볼릭 링크를 만들 수 있습니다.
이 기술을 사용하는 유명한 예로는 하나의 단일 바이너리와 많은 심볼릭 링크를 설치하는 busybox 프로젝트가 있습니다. (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의 값이 0보다 큰 경우 argv [0]이 가리키는 문자열은 프로그램 이름을 나타냅니다. 프로그램 이름을 호스트 환경에서 사용할 수없는 경우 argv [0] [0]은 널 문자입니다.
C 표준은 "파일 이름"이 아니라 "프로그램 이름"이라고 표시합니다.