본문 바로가기
프로그래밍/운영체제

C/C++ 프로세스 생성하기.

by Hwan2 2019. 12. 29.
728x90
반응형

C/C++에서 프로세스를 생성하는 방법은 다음과 같습니다.

 

CreateProcess() 함수를 통해 생성하는 방법입니다.

 

CreateProcess() 함수는 다음과 같이 정의되어 있습니다.

BOOL CreateProcess{
    LPCTSTR lpApplicationName,
    LPTSTR lpCommandLine,
    LPSECURITY_ATTRIBUTES lpProcessAttributes,
    LPSECURTIY_ATTRIBUTES lpThreadAttributes,
    BOOL bInheritHandles,
    DWORD dwCreationFlags,
    LPVOID lpEnvironment,
    LPCTSTR lpCurrentDirectory,
    LPSTARTUPINFO lpStartupInfo,
    LPPROCESS_INFORMATION lpProcessInformation
};

 

 

 

 

프로세스를 생성하게 되면 부모프로세스와 커널오브젝트를 공유하게 됩니다.

 

부모프로세스는 커널오브젝트를 통해 자식프로세스의 정보를 얻어올 수 있습니다.

 

 

 

 

자식프로세스는 종료가 되면 커널 오브젝트와의 연결을 자동으로 끊어내지만 부모프로세스는 그렇지 않습니다.

 

즉, 프로그래머가 직접 연결을 끊어줘야 합니다. 

 

연결을 안끊어주게 된다면 아래와 같이 진행하게 됩니다.

 

 

 

따라서 자식프로세스를 생성한 후 연결을 끊어줘야 합니다.

 

끊어주는 타이밍은 프로그래머가 용도에 맞게 적절한 위치에서 끊어주면 됩니다.

 

끊기 위해서는 CloseHandle() 함수를 사용합니다.

 

TCHAR command[] = _T("test.exe");    
STARTUPINFO si = { 0, };
PROCESS_INFORMATION pi;
si.cb = sizeof(si);
TCHAR title[] = "test.exe";
si.lpTitle = title;

CreateProcess(NULL, command, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);

CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
​

 

 

이런식으로 말이죠.

 

 

 

 

반응형

댓글


스킨편집 -> html 편집에서