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

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

Patricia Arquette
Patricia Arquette원래의
2024-12-14 12:23:11840검색

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

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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