2014-05-12 1 views
-1

setenv()를 사용하여 새로운 environement 변수를 설정하려고합니다.envp를 사용하여 setenv()를 사용할 수 있습니까?

하지만 난 그에서는 setenv() 함수를 내가 environement "통근 문자 ** 싸다"

를 사용하지만 주()의 인수를 사용하려는 경우에만 내 새로운 environement 변수를 설정 noticided : "문자를 * * envp ".

다음은 envp에서 설정하려고 시도한 코드입니다.하지만 해당 코드를 실행하면 볼 수 있듯이 envp에 설정되지 않습니다.

하지만 const char ** 환경 변수를 사용하면 작동합니다.

아이디어가 있으십니까?

#include <stdlib.h> 
#include <stdio.h> 

int  main(int ac, char **av, char **envp) 
{ 
    int i; 

    i = 0; 
    setenv("NEW_ENV_VAR", "hello_world", 0); 
    while (envp[i]) 
    printf("%s\n", envp[i++]); 
    return (0); 
} 

답변

1

setenv은() 주에 옵션 envp 인수를 변경 할 수 없습니다에 설명되어 있습니다.

모든 환경 변수를 반복해야하는 경우 extern char **environvariable을 사용하십시오.

도 참조하십시오. this question.

+0

그래서 envp를 사용하려면 setenv()를 다시 코딩해야합니다. – Difender

+0

아니요.'envp'는'main'에있는 * local 변수입니다. 그리고 그것을 수정하는 근본적으로 외부 함수가 없습니다. 'extern char ** environ;'을 사용하십시오. 또는'envp' 변수를 사용하기를 원한다면'setenv' 호출 뒤의'main'에'envp = environ;'이라고 써주십시오. –