>백엔드 개발 >C++ >`argv[0]`은 항상 C/C에서 실행 파일 이름입니까?

`argv[0]`은 항상 C/C에서 실행 파일 이름입니까?

DDD
DDD원래의
2024-12-09 09:27:06837검색

Is `argv[0]` Always the Executable Name in C/C  ?

argv[0]은 항상 실행 파일 이름인가요, 아니면 단순한 규칙인가요?

C에서 main() 함수에 인수를 제공하는 경우 또는 C 응용 프로그램의 경우 다음과 같은 질문이 발생합니다. argv[0]은 항상 실행 파일의 이름을 나타냅니까? 아니면 보편적인 적용 가능성을 보장하지 않는 단지 광범위한 규칙일까요?

표준 살펴보기

argv[0}의 진정한 특성을 확인하려면 다음을 수행해야 합니다. 관련 표준을 참조하십시오. ISO C11에서는 argc가 0을 초과하면 "argv[0]이 프로그램 이름을 나타냅니다."라고 명시적으로 명시하고 있습니다. 그러나 "argv[0][0]은 호스트 환경에서 프로그램 이름을 사용할 수 없는 경우 null 문자여야 합니다."라는 점을 결정적으로 덧붙입니다.

이 설명을 통해 argv[0]는 프로그램만 구현한다는 점을 알 수 있습니다. 호스트 환경에서 쉽게 얻을 수 있는 경우 이름입니다. 또한 표준에서는 argv에 포함된 값이 호스트 환경의 변덕에 따라 완전히 구현에 따라 정의된다는 점을 강조합니다.

프로그램 이름의 의미

결과적으로, 호스트 환경에 프로그램 이름을 제공할 수 있는 기능이 없으면 프로그램 이름이 비어 있을 수 있으며, 액세스 가능한 경우 임의의 형식을 취할 수 있습니다. 이론적으로 호스트 환경은 재미를 위해 횡설수설한 프로그램 이름을 제공하도록 선택할 수도 있습니다!

주의 사항

그러나 "구현 정의"에 유의해야 합니다. "는 ISO 표준 내에서 뚜렷한 의미를 갖습니다. 구현은 특정 동작을 자세히 문서화할 의무가 있습니다. 결과적으로, exec 명령 계열을 통해 argv[0]을 임의의 콘텐츠로 채우는 유연성으로 유명한 UNIX와 같은 플랫폼이라도 해당 사례를 공식적으로 기록해야 합니다.

위 내용은 `argv[0]`은 항상 C/C에서 실행 파일 이름입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.