cab
div
eof
확장 최소화
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본
이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

getenv_s, _wgetenv_s

현재 환경에서 값을 가져옵니다. 이러한 버전의 getenv, _wgetenv 에 설명 된 대로 보안을 강화 하 고 있는 CRT의 보안 기능.

중요 중요

이 API를 실행 하는 응용 프로그램에서 사용할 수 있는 Windows 런타임. 자세한 내용은 /zw에 지원 되는 CRT 함수.

errno_t getenv_s( size_t *pReturnValue, char* buffer, size_t numberOfElements, const char *varname ); errno_t _wgetenv_s( size_t *pReturnValue, wchar_t *buffer, size_t numberOfElements, const wchar_t *varname ); template <size_t size> errno_t getenv_s( size_t *pReturnValue, char (&buffer)[size], const char *varname ); // C++ only template <size_t size> errno_t _wgetenv_s( size_t *pReturnValue, wchar_t (&buffer)[size], const wchar_t *varname ); // C++ only
pReturnValue

필요한 경우 버퍼 크기 이거나 변수를 찾을 수 없는 경우 0입니다.

buffer

환경 변수의 값을 저장 하는 버퍼입니다.

numberOfElements

Size of buffer.

varname

환경 변수 이름입니다.

성공 하는 경우에 0입니다. 그렇지 않으면, 오류 코드 실패 시.

오류 조건

pReturnValue

buffer

numberOfElements

varname

반환 값

NULL

any

any

any

EINVAL

any

NULL

>0

any

EINVAL

any

any

any

NULL

EINVAL

이러한 오류 조건이 호출에 잘못 된 매개 변수 처리기에 설명 된 대로 매개 변수 유효성 검사. 실행을 계속 허용 되 면 기능 설정 errnoEINVAL 및 반환 EINVAL.

버퍼가 너무 작습니다 경우 이러한 함수를 반환 하는 또한 ERANGE. 에 잘못 된 매개 변수 처리기는 호출 되지 않습니다. 필요한 버퍼 크기를 작성 pReturnValue, 하 고 있으므로 큰 버퍼를 사용 하 여 다시 함수를 호출 하는 프로그램을 사용 합니다.

getenv_s 함수에 대 한 환경 변수의 목록 검색 varname. getenv_s Windows 운영 체제에서 대 / 소문자입니다. getenv_s _putenv_s 전역 변수를 통해 가리키는 환경의 복사본을 사용 _environ 환경에 액세스할 수 있습니다. getenv_s 에 런타임 라이브러리에 액세스할 수 있는 데이터 구조 및 프로세스에 대 한 운영 체제에서 만든 "세그먼트" 환경에서 작동 합니다. 따라서 사용 하는 프로그램은 envp 인수를 또는 wmain 잘못 된 정보를 검색할 수 있습니다.

_wgetenv_s 와이드 문자 버전인 getenv_s. 인수와 반환 값을 _wgetenv_s 와이드 문자 문자열입니다. _wenviron 전역 변수인 와이드 문자 버전을 _environ.

MBCS 프로그램 (예를 들어, ASCII SBCS 프로그램)에서 _wenviron 처음에 NULL 멀티 바이트 문자 환경이 구성 되므로. 다음에 첫 번째 호출에 _wputenv, 또는에 대 한 첫 번째 호출에 _wgetenv_s, (MBCS) 환경에 이미 있는 경우 해당 와이드 문자열 환경이 만들어지고 다음 가리킵니다 _wenviron.

유니코드에서는 비슷하게 (_wmain) 프로그램을 _environ 처음에 NULL 와이드 문자열 환경이 구성 되므로. 다음에 첫 번째 호출에 _putenv, 또는에 대 한 첫 번째 호출에 getenv_s (유니코드) 환경이 이미 있는 경우 해당 MBCS 환경이 만들어지고 다음 가리킵니다 _environ.

프로그램의 환경 (MBCS와 유니코드)의 복사본 두 개를 동시에 존재할 때 런타임 시스템 두 복사본을 유지 해야 하 고 그러면 느린 실행 시간. 호출할 때 예를 들어, _putenv, 호출을 _wputenv 두 환경 문자열에 대응 되도록 자동으로 실행 될 수도 있습니다.

주의 정보 주의

런타임 시스템 유니코드 버전 및 환경에서의 멀티 버전을 모두 유지 관리 하는 경우 드물긴 하지만 두 환경 버전 정확 하 게 다를 수 있습니다. 이 고유 유니코드 문자열을 고유한 멀티 바이트 문자 문자열을 매핑하는 있지만 고유 유니코드 문자열을 멀티 바이트 문자 문자열 매핑을 반드시 고유 하지 때문에 발생 합니다. 자세한 내용은 _environ, _wenviron을 참조하십시오.

참고 참고

_putenv_s_getenv_s 제품군의 함수는 스레드로부터 안전 합니다. _getenv_s하는 동안 문자열 포인터를 반환할 수 있습니다 _putenv_s 문자열을 수정 하 고 있으므로 임의의 오류를 일으킬 합니다. 이러한 함수 호출을 동기화 해야 합니다.

C + +에서이 함수 템플릿 오버 로드에 의해 단순화 됩니다. 오버 로드 버퍼 길이 자동으로 유추 하 고 있으므로 size 인수를 지정할 필요가 있습니다. 자세한 내용은 보안 템플릿 오버 로드을 참조하십시오.

일반 텍스트 루틴 매핑

TCHAR입니다.H 루틴

_UNICODE 및 _Mbcs가 정의 되어 있지 않습니다

_Mbcs가 정의

_Unicode가 정의

_tgetenv_s

getenv_s

getenv_s

_wgetenv_s

확인 하거나 값을 변경 하는 TZ 환경 변수를 사용 getenv_s, _putenv, 및 _tzset, 필요에 따라. TZ 에 대한 자세한 내용은 _tzset_daylight, _dstbias, _timezone, _tzname을 참조하십시오.

루틴

필수 헤더

getenv_s

<stdlib.h>

_wgetenv_s

<stdlib.h> 또는 <wchar.h>

추가 호환성 정보를 참조 하십시오. 호환성.

// crt_getenv_s.c
// This program uses getenv_s to retrieve
// the LIB environment variable and then uses
// _putenv to change it to a new value.
 
#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   char* libvar;
   size_t requiredSize;

   getenv_s( &requiredSize, NULL, 0, "LIB");
   if (requiredSize == 0)
   {
      printf("LIB doesn't exist!\n");
      exit(1);
   }

   libvar = (char*) malloc(requiredSize * sizeof(char));
   if (!libvar)
   {
      printf("Failed to allocate memory!\n");
      exit(1);
   }

   // Get the value of the LIB environment variable.
   getenv_s( &requiredSize, libvar, requiredSize, "LIB" );

   printf( "Original LIB variable is: %s\n", libvar );

   // Attempt to change path. Note that this only affects
   // the environment variable of the current process. The command
   // processor's environment is not changed.
   _putenv_s( "LIB", "c:\\mylib;c:\\yourlib" );

   getenv_s( &requiredSize, NULL, 0, "LIB");

   libvar = (char*) realloc(libvar, requiredSize * sizeof(char));
   if (!libvar)
   {
      printf("Failed to allocate memory!\n");
      exit(1);
   }

   // Get the new value of the LIB environment variable. 
   getenv_s( &requiredSize, libvar, requiredSize, "LIB" );

   printf( "New LIB variable is: %s\n", libvar );

   free(libvar);
}
원본 LIB 변수: c:\vctools\lib;c:\vctools\atlmfc\lib;c:\vctools\PlatformSDK\lib;c:\vctools\Visual Studio SDKs\DIA Sdk\lib; c:\vctools\Visual Studio SDKs\BSC Sdk\lib 새 LIB 변수입니다: c:\mylib;c:\yourlib
이 정보가 도움이 되었습니까?
(1500자 남음)

커뮤니티 추가 항목

추가
© 2013 Microsoft. All rights reserved.