CreateProcess 함수
WinAPI 에서 프로세스를 생성하는 기본 함수 - CreateProcess( )
WinExec 등의 함수도 내부적으로는 이 함수를 호출하여 프로세스를 생성
BOOL CreateProcess( LPCTSTR lpApplicationName,
LPTSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreateionFlags,
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation );
10 개나 인자를 가지고 있지만 이 중에 반드시 필요한 인자는 4개 뿐이며 나머지는 모두 NULL로 줄 수 있다
4개의 인수를 살펴보자
1. lpApplicationName
실행하고자 하는 프로그램의 이름 지정
절대 경로를 주거나 파일명만 지정할 수도 있는데 파일명만 지정한 경우는 현재 디렉토리에서 파일을 찾음
검색 경로는 사용하지 않음
이 인자를 NULL로 주고 두 번째 인자에 실행 파일명을 지정할 수도 있음
2. lpCommandLine
명령행 인자를 지정
첫 번째 인자가 NULL일 경우 실행 파일 명을 가질 수도 있음
실행 파일 명과 명령행 인자를 동시에 지정하는 것도 가능
3. lpStartupInfo
새로 만든 프로세스의 메인 윈도우가 어떻게 초기화될지를 지정하는 구조체
이 구조체의 cb 멤버에는 구조체의 크기가 반드시 대입되어야 함
구조체에 특별한 옵션을 주지 않는 한 구조체의 모든 멤버는 0으로 초기화
4. lpProcessInformation
새로 만든 프로세스의 메인 윈도우가 어떻게 초기화될지를 지정하는 구조체이며 생략할 수 없음
출력용 인수이므로 초기화 할 필요는 없고 구조체 변수를 선언한 후 주소만 전달