프로세스 환경변수의 구성
환경변수 데이터를 저장하는 함수 : SetEnvironmentVariable("Key", "Value");
환경변수 데이터를 가져오는 함수 : GetEnvironmentVariable("Key", 반환할 포인터 변수,);
* 환경변수 테이블은 자식 프로세스에게 복사하여 보낼 수 있음
ex) EnvParent.cpp
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int _tmain(int argc, TCHAR* argv[])
{
SetEnvironmentVariable(_T("Good"), _T("morning"));
SetEnvironmentVariable(_T("Hey"), _T("Ho!"));
SetEnvironmentVariable(_T("Big"), _T("Boy"));
STARTUPINFO si = {0,};
PROCESS_INFORMATION pi = {0,};
si.cb = sizeof(si);
CreateProcess (
NULL, _T("EnvChild"), NULL, NULL, FALSE,
CREATE_NEW_CONSOLE | CREATE_UNICODE_ENVIRONMENT,
NULL, // NULL인 경우 부모 프로세스의 환경 변수 테이블을 자식 프로세스에게 그대로 등록
NULL, &si, &pi
);
CloseHandle(pi.hProcess);
CloseHandle(ph,hThread);
return 0;
}
ex) EnvChild.cpp
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define BUFFSIZE 1024
int _tmain2(int argc, TCHAR* argv[])
{
TCHAR value[BUFFSIZE];
if (GetEnvironmentVariable(_T("Good"), value, BUFFSIZE) > 0)
_tprintf(_T("[%s = %s] \n"), _T("Good"), value)
if (GetEnvironmentVariable(_T("Hey"), value, BUFFSIZE) > 0)
_tprintf(_T("[%s = %s] \n"), _T("Hey"), value)
if (GetEnvironmentVariable(_T("Big"), value, BUFFSIZE) > 0)
_tprintf(_T("[%s = %s] \n"), _T("Big"), value)
Sleep(10000);
return 0;
}
- 자식 프로세스에게 환경 변수 테이블이 그대로 상속되어 보여짐
'시스템 프로그래밍' 카테고리의 다른 글
8-3. 파이프 방식의 IPC (0) | 2022.05.20 |
---|---|
8-2. 핸들 테이블과 오브젝트 핸들의 상속 (0) | 2022.05.20 |
7-2. Signaled & Non-Signaled (0) | 2022.05.17 |
7-1. 프로세스간 통신(IPC) (0) | 2022.05.17 |
6-2. 커널 오브젝트와 핸들의 종속관계 (0) | 2022.05.14 |