Ocean_
꾸준한 프로그래밍
Ocean_
전체 방문자
오늘
어제
  • 분류 전체보기 (174)
    • About Me (4)
    • 우아한테크코스 (27)
    • C & LINUX (50)
    • Operating System (12)
    • Database (25)
    • Computer Vision (0)
    • Problem Solving (0)
      • Programmers (0)
      • BOJ (0)
    • 코코코딩공부 (44)
      • Spring (12)
      • JAVA (14)
      • 디자인 패턴 (4)
      • 책 읽기 (4)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 우테코5기
  • SIGINT
  • DB
  • 자바
  • 원시값 포장
  • 우아한테크코스
  • 우아한형제들
  • OS
  • C
  • 리눅스
  • 1259
  • 블랙잭
  • Operating System
  • 운영체제
  • signal
  • 데이터 조작어
  • Spring
  • OperatingSystem
  • 우테코 체스
  • 정규화
  • C++
  • 트랜잭션
  • Linux
  • 인덱스
  • BOJ
  • 프로세스
  • 우아한테크코스5기
  • bean
  • 백준
  • 우테코

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Ocean_

꾸준한 프로그래밍

C / LINUX  putenv(3)
C & LINUX

C / LINUX putenv(3)

2022. 5. 2. 18:46

함수 기능

기존 환경 변수의 값을 변경하거나 새로운 환경변수를 등록

 

환경변수란?

환경변수란 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임

함수 원형

#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
    'C & LINUX' 카테고리의 다른 글
    • C / LINUX symlink() readlink()
    • C / LINUX remove(3) rename(2)
    • C / LINUX link() unlink()
    • C / LINUX chown() fchown() lchown()
    Ocean_
    Ocean_
    dongVeloper

    티스토리툴바