상세 컨텐츠

본문 제목

08.3 프로세스 환경변수

Programming/Windows System

by RACC8N 2020. 4. 18. 19:18

본문

환경변수 : 프로세스별로 별도의 메모리 공간에 문자열 데이터를 저장하고 관리할 수 있도록 되어 있다. 

 

key = value 

 

부모 프로세스는 자식 프로세스 생성 시, 자식 프로세스의 환경변수를 등록할 수도 있고, 그냥 부모 프로세스의 환경변수를 상속시킬 수 있다.

 

환경변수 등록 함수 : SetEnvironmentVariable()

lpName key에 해당하는 값을 지정 (key를 통해 value를 참조하게 됨)
lpValue value에 해당하는 값을 지정

환경변수 참조 함수 : GetEnvironmentVariable()

lpName key를 전달 (key에 해당하는 value를 얻게 됨)
lpBuffer value 값을 저장하기 위한 메모리의 주소 지정
nSize lpBuffer가 가리키는 메모리의 크기 지정

 

이것만은 알고 갑시다

 

1. 핸들 테이블

- 커널오브젝트와 핸들 사이에 핸들 테이블이 존재한다. 이로서 핸들을 참조하여 특정 커널 오브젝트를 가리킬 수 있다.

 

2. 핸들과 핸들 테이블

- 핸들 테이블은 프로세스별로 독립적이다. 그리고 숫자가 핸들로서 의미를 지니기 위해서는 핸들 테이블에 등록되어야 한다. 등록되는 순간부터 핸들이라 할 수 있으며 이 핸들을 통해서 커널 오브젝트에 접근하는 것이 가능하다.

 

3. 핸들의 상속

- 핸들은 자식 프로세스를 생성하는 과정에서 상속될 수 있다. 핸들이 자식 프로세스에게 상속된다는 말은 부모 프로세스의 핸들 테이블 정보가 자식 프로세스의 핸들 테이블에 복사된다는 뜻이다.

 

4. 가짜 핸들 (Pseudo 핸들)

- GetCurrentProcess 함수 호출을 통해서 얻은 핸들을 가리켜 가짜 핸들이라 한다. 이는 핸들 테이블에 등록된 핸들값이 아닌, 자기 자신의 프로세스를 가리키기 위한 약속된 상수이기 때문이다. 핸들 테이블에 등록된 핸들을 얻기 위해서는 DuplicateHandle 함수를 사용해야 한다.

 

5. 파이프

- 이름없는 파이프와 이름있는 파이프가 있다. 이름없는 파이프는 프로세스간의 관계가 있을 시 유용하며, 단방향 방식이다. 이름있는 파이프는 메일슬롯과 유사하지만, 브로드캐스트 방식을 지원하지 않으며 양방향 통신을 한다.

 

 

관련글 더보기

댓글 영역