본문 바로가기

부모 프로세스

커널 오브젝트(Kernel Object) - 2 커널 오브젝트의 상태(State) : 리소스에 특정 상황이 발생함에 따라 Signaled 상태(신호를 받은 상태)와 Non-Signaled 상태(신호를 받지 않은 상태)로 나뉜다. (예 : 프로세스 커널 오브젝트의 상태 종료된 프로세스는 다시 살릴수 없다. 따라서 프로세스 커널 오브젝트의 상태는 Signaled -> Non-Signaled 로 변경될 수 없다) 커널 오브젝트의 상태를 확인하는 함수 : DWORD WaitForSingleObject( HANDLE hHandle, // 상태 확인을 원하는 커널 오브젝트의 핸들 DWORD dwMilliseconds // hHandle가 가리키는 커널 오브젝트가 Signaled 상태가 될 때까지 기다릴수 있는 최대 시간(INFINITE 전달 : Signaled .. 더보기
커널 오브젝트(Kernel Object) 커널 오브젝트 : Windows 운영체제에서 리소스(Resource : 프로세스, 쓰레드, 파일)들을 관리하기 위한 데이터를 저장하는 메모리 블록 Windows에서 관리하는 리소스 특성을 변경하기 위해서는 해당 리소스의 커널 오브젝트를 조작해야한다. 해당 리소스의 정보를 저장하고 있는 커널 오브젝트에 접근하기 위해서는 커널 오브젝트들을 구별하는 커널 오브젝트 핸들(Object Handle)을 얻어야 한다. 커널 오브젝트와 핸들 : 커널 오브젝트는 Windows 운영체제에 종속적이다. 사용자가 리소스 생성을 요청하면 운영체제에서 사용자가 요청한 대로 리소스를 생성하게 되고 이를 관리하기 위해 커널 오브젝트를 생성한다. 즉, 커널 오브젝트는 Windows 운영체제에 의해 생성 및 소멸이 결정된다. 리소스가 .. 더보기
CreateProcess 함수 CreateProcess Process A -------> Process B (부모 프로세스) CreateProcess (자식 프로세스) BOOL CreateProcess( LPCTSTR lpApplicationName, // 생성될 프로세스의 이름 LPTSTR lpCommandLine, // 생성될 프로세스에 인자 전달(변수만 가능) LPSECURITY_ATTRIBUTES lpProcessAttributes, // 프로세스의 보안 속성 지정 LPSECURITY_ATTRIBUTES lpThreadAttributes, // 쓰레드의 보안 속성 지정 BOOL bInheritHandles, // TRUE : 부모 프로세스가 소유하는 상속 가능한 핸들을 상속한다. DWORD dwCreationFlags, // .. 더보기
프로세스(Process) 생성 소스 /* 자식 프로세스(Child Process) */ #include #include #include #include INT_PTR _tmain(INT_PTR argc, TCHAR* argv[]) { _tsetlocale(LC_ALL, _T("Korean")); _tprintf(_T("자식 프로세스(Child Process) \n")); system("pause"); return 0; } /* 부모 프로세스(Parent Process : CreateProcess 이용) */ #include #include #include #include #define DIR_LEN MAX_PATH+1 INT_PTR _tmain(INT_PTR argc, TCHAR* argv[]) { _tsetlocale(LC_ALL, _T.. 더보기