함수 기능
기존 환경 변수의 값을 변경하거나 새로운 환경변수를 등록
환경변수란?
환경변수란 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임
함수 원형
#include <stdlib.h>
int putenv(const char *str);
함수 파라메터
str
이름 = 값 의 형식으로 처리
함수 예제
putenv1
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
void ssu_addone(void);
extern char **environ;
char glob_var[]="HOBBY=swimming";
int main(void){
int i;
for(i = 0; environ[i]!=NULL; i++){
printf("environ[%d] :%s\n",i,environ[i]);
}
putenv(glob_var);
ssu_addone();
printf("My hobby is %s\n",getenv("HOBBY"));
printf("My lover is %s\n",getenv("LOVER"));
strcpy(glob_var + 6 , "fising");
for(i=0; environ[i] !=NULL; i++)
printf("environ[%d] :%s\n",i,environ[i]);
exit(0);
}
void ssu_addone(void){
char auto_var[10];
strcpy(auto_var, "LOVER=js");
putenv(auto_var);
}
putenv2
#include<stdio.h>
#include<stdlib.h>
void ssu_printenv(char *label, char ***envpp);
extern char **environ;
int main(int argc, char *argv[],char *envp[]){
ssu_printenv("Initially",&envp);
putenv("TZ=PST8PDT");
ssu_printenv("After changing TZ",&envp);
putenv("WARNING=Don't use envp after putenv()");
ssu_printenv("After setting a new variable",&envp);
printf("value of WARNING is %s\n",getenv("WARNING"));
exit(0);
}
void ssu_printenv(char * label, char***envpp){
char **ptr;
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
void ssu_addone(void);
extern char **environ;
char glob_var[]="HOBBY=swimming";
int main(void){
int i;
for(i = 0; environ[i]!=NULL; i++){
printf("environ[%d] :%s\n",i,environ[i]);
}
putenv(glob_var);
ssu_addone();
printf("My hobby is %s\n",getenv("HOBBY"));
printf("My lover is %s\n",getenv("LOVER"));
strcpy(glob_var + 6 , "fising");
for(i=0; environ[i] !=NULL; i++)
printf("environ[%d] :%s\n",i,environ[i]);
exit(0);
}
void ssu_addone(void){
char auto_var[10];
strcpy(auto_var, "LOVER=js");
putenv(auto_var);
}
printf("---- %s ---\n",label);
printf("envp is at %8o abd continas %8o\n",envpp,*envpp);
printf("environ is at %8o and contains %8o\n",&environ,environ);
printf("My environment variable are:\n");
for(ptr=environ; *ptr; ptr++)
printf("(%8o) = %8o -> %s\n",ptr, *ptr, *ptr);
printf("(%8o) = %8o\n",ptr,*ptr);
}
함수 결과
putenv1
putenv2
리눅스시스템 프로그래밍 - 홍지만 저
교재 내에 있는 예제를 바탕으로 작성한 글 입니다.
'C & LINUX' 카테고리의 다른 글
C / LINUX symlink() readlink() (0) | 2022.05.02 |
---|---|
C / LINUX remove(3) rename(2) (0) | 2022.05.02 |
C / LINUX link() unlink() (0) | 2022.05.02 |
C / LINUX chown() fchown() lchown() (0) | 2022.05.02 |
C / LINUX chmod(2) fchmod(2) (0) | 2022.05.02 |