2013-12-23 2 views
2

C 프로그램 내에서 환경 변수를 수정할 수 있습니까? 이런 식으로 뭔가 :C 프로그램 내에서 환경 변수 수정

#include <stdlib.h> 
int main(void) 
{ 
    system("echo $VARIABLE"); 
    system("VARIABLE=somethig"); 
    system("echo $VARIABLE"); 
    return 0; 
} 
+1

예. 유닉스 유틸리티'env'를보십시오. 그러나 당신이하려고하는 것처럼 아닙니다. –

+0

OS 문서 확인 – StoryTeller

+0

''이 포함 된 경우 [setenv] (http://pubs.opengroup.org/onlinepubs/009695399/functions/setenv.html)가 있어야합니다. –

답변

2

setenv(const char *name, const char *value, int overwrite);이 필요한 기능입니다.

man page 가입일 setenv("CONFIG_PATH", "/etc", 0);

: name 만약 그렇다면

setenv() 함수 값 value와 환경 변수에 name 추가
, 존재하지. name 이 환경에 존재하면 덮어 쓰기가 0이 아니면 그 값은 value 으로 변경됩니다. 덮어 쓰기가 0이면 valuename입니다. 이 함수는 을 가리키는 문자열의 복사본을 namevalue (putenv(3)과 대조적으로)으로 만듭니다.

+0

좋아요! 정확히 내가 무엇을 찾고 있었는지. 고마워. – jruiz

8

사용 setenv() 또는 putenv(). 잡화를 putenv()으로 조심하십시오.

작성된 코드는 system()이라는 호출로 생성 된 새 셸 인터프리터의 환경을 설정합니다. 해당 환경은 system()이 반환되면 폐기됩니다.

+0

표시된 코드가 작동하지 않는 이유를 설명하는 +1. –