argv[0]이 실행 파일 이름으로 보장됩니까?
C 또는 C 애플리케이션으로 작업할 때 다음과 같이 가정하는 경우가 많습니다. main()에 전달된 첫 번째 인수(argv[0])는 실행 파일의 이름을 나타냅니다. 그러나 이 가정이 항상 사실이 아닐 수도 있습니다.
표준의 정의
ISO C11 표준에 따르면:
"argc의 값이 가 0보다 크면 argv[0]이 가리키는 문자열은 프로그램 이름을 나타냅니다. 프로그램 이름이 다음과 같은 경우 argv0은 널 문자입니다. 호스트 환경에서는 사용할 수 없습니다."
이 문은 호스트 환경에서 이름을 사용할 수 있는 경우 argv[0]에 프로그램 이름만 포함해야 함을 명확히 합니다. 더욱이, 이는 정확히 일치하지 않고 오히려 표현일 수도 있습니다.
구현 정의 값
표준에서는 argv[0]의 값이 다음과 같다고 추가로 명시합니다. 구현 정의. 이는 서로 다른 운영 체제나 환경이 argv[0] 채우기를 다르게 처리할 수 있음을 의미합니다.
예를 들어 UNIX 기반 시스템에서 exec 계열 호출은 argv[0]에 임의의 값을 할당할 수 있습니다. 그러나 표준에 따르면 구현 시 이 동작을 문서화해야 합니다.
결론
따라서 argv[0]에 실행 파일 이름을 포함하는 것이 일반적인 규칙이지만, 이는 C 또는 C 표준에서 보장되지 않습니다. 구현 시 해당 동작을 문서화하는 한 argv[0]의 내용이 달라질 수 있습니다.
위 내용은 argv[0]은 항상 C/C의 실행 파일 이름입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!