현재 설정되어 있는 환경 변수 출력1
#include <stdio.h>
#include <stdlib.h>
/* envp에 환경 변수 정보 저장 */
main(int argc, char *argv[], char *envp[])
{
while(*envp)
printf("%s\n", *envp++);
}
-------------------------------------------------------------------------------
현재 설정되어 있는 환경 변수 출력2
#include <stdio.h>
#include <stdlib.h> /* environ 변수를 선언하는 헤더 파일 */
/* environ에 환경 변수 정보 저장 */
extern char **environ;
main()
{
while(*environ)
printf("%s\n", *environ++);
}
-------------------------------------------------------------------------------
환경변수 HOME,PWD,LINUX에 대한 값을 가져와서 출력하는 프로그램
#include <stdio.h>
#include <stdlib.h> /* getenv 함수를 정의하는 헤더 파일 */
main()
{
char *home_dir, *work_dir;
/* getenv를 이용해 HOME에 대한 환경 변수 값 얻어 옴 */
if((home_dir=getenv("HOME")) != NULL)
printf("home directory : %s\n", home_dir);
/* getenv를 이용해 PWD에 대한 환경 변수 값 얻어 옴 */
if((work_dir = getenv("PWD")) != NULL)
printf("working directory : %s\n", work_dir);
/* LINUX라는 환경 변수가 없으므로 NULL을 반환 */
if((tmp = getenv("LINUX")) != NULL)
printf("temp : %s\n", tmp);
}
-------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h> /* getenv, putenv 함수를 정의하는 헤더 파일 */
main()
{
char *home_dir;
/* HOME 환경 변수 값을 얻어 와서 출력 */
if((home_dir=getenv("HOME")) != NULL)
printf("home directory : %s\n", home_dir);
/* HOME 환경 변수 값을 /home/jkim/book/linux로 설정 */
putenv("HOME=/home/jkim/book/linux");
if((home_dir=getenv("HOME")) != NULL)
printf("home directory : %s\n", home_dir);
}
-------------------------------------------------------------------------------
명령라인 인수가 두개면 해당환경 변수 값을 출력하고 다음과 같이 인수가 세개면
[~~localhost]# a.out HOME /home/kweun001/book/linux
변수값을 출력하고 새로운 값으로 설정하고 다시 출력
#include <stdio.h>
#include <stdlib.h> /* getenv, setenv 함수를 정의하는 헤더 파일 */
#include <string.h> /* strcpy, strcat 함수를 정의하는 헤더 파일 */
main(int argc, char *argv[])
{
char *value, *string;
if(argc==1 || argc>3) {
printf("Usage : a.out variable [value]\n");
exit(1);
}
/* argv[1] 환경 변수 값을 얻어 와서 출력 */
if((value=getenv(argv[1])) != NULL)
printf("%s : %s\n", argv[1], value);
else
printf("%s : no value\n", argv[1]);
/* 명령라인 인수가 3개면 */
if(argc == 3) {
/* 메모리를 동적으로 할당 받음 */
string = malloc(strlen(argv[1])+strlen(argv[2])+2);
/* argv[1]을 string에 복사 */
strcpy(string, argv[1]);
/* string 뒤에 ‘=’을 연결 */
strcat(string, "=");
strcat(string, argv[2]);
/* 환경 변수 값을 변경 */
putenv(string);
/* 변경된 환경 변수 값을 얻어 와서 출력 */
if((value=getenv(argv[1])) != NULL)
printf("%s's new value : %s\n", argv[1], value);
else
printf("error : %s\n", string);
}
exit(0);
}
-------------------------------------------------------------------------------
setenv를 이용해 환경 변수값을 변경하는 프로그램
#include <stdio.h>
#include <stdlib.h> /* setenv, getenv 함수를 정의하는 헤더 파일 */
main()
{
char *value;
/* overwrite가 0이므로 이미 HOME이 존재하면 변경하지 않음 */
setenv("HOME", "/home/jkim/book/linux", 0);
value = getenv("HOME");
printf("[setenv overwrite : 0] HOME : %s\n", value);
/* overwrite가 1이므로 이미 HOME이 존재해도 값을 변경 */
setenv("HOME", "/home/jkim/book/linux", 1);
value = getenv("HOME");
printf("[setenv overwrite : 1] HOME : %s\n", value);
exit(0);
}
-------------------------------------------------------------------------------
unsetenv함수를 이용하여 환경 변수 자체를 삭제하는 프로그램
#include <stdio.h>
#include <stdlib.h> /* getenv, unsetenv 함수를 정의하는 헤더 파일 */
main()
{
char *value;
if((value=getenv("HOME")) != NULL)
printf("HOME : %s\n", value);
else
printf("HOME : no value\n");
/* HOME 환경 변수를 삭제 */
unsetenv("HOME");
/* HOME 환경 변수 없으므로 NULL 반환 */
if((value=getenv("HOME")) != NULL)
printf("HOME : %s\n", value);
else
printf("HOME : no value\n");
exit(0);
}
-------------------------------------------------------------------------------
'EMBEDDED > SYSTEM Proc' 카테고리의 다른 글
[Process] fork() 의 기본적인 사용방법 (0) | 2012.07.13 |
---|---|
[Normal] 파일 디렉토리 관련 예제 (0) | 2012.07.13 |
[Normal] 파일관련 예제들 (0) | 2012.07.13 |
[Normal] 사용자와 그룹 정보에대한 관련 예제 (0) | 2012.07.13 |
[Normal] getopt()함수 관련 예제 (0) | 2012.07.13 |