프로그래밍을 통한 프로세스의 생성


프로세스 생성 함수



BOOL CreateProcess(

LPCTSTR lpApplicationName ,   //실행파일 이름 지정

LPTSTR lpCommandLine ,          /*매개변수 전달  (실행파일이름과 매개변수                            

                                                     정보를 묶어서 하나로 이곳에 표현 가능)*/

LPSECURITY_ATTRIBUTES lpProcessAttributes ,

LPSECURITY_ATTRIBUTES lpTreadAttributes ,

BOOL binheritHandles ,

DWORD dwCreationFlags ,

LPVOID lpEnvironment ,

LPCTSTR lpCurrentDirectory ,

LPSTARTUPINFO lpstrartupInfo ,

LPPROCESS_INFORMATION lpProcessInformation

);




LPSTARTUPINFO 

 정보전달

CreateProess 

정보반환

  LPPROCESS_INFORMATION 


※CreateProcess함수를 호출하기 위해서는

 LPSTARTUPINFO, LPPROCESS_INFORMATION 구조체를 선언해야한다.


LPSTARTUPINFO

이구조체를 통하여 생성하고자하는 프로세스 특성정보를 설정하여 CreateProcess에 인자로 전달한다.

 

LPPROCESS_INFORMATION 

CreateProcess함수가 생성된 프로세스정보를 LPPROCESS_INFORMATION 에 반환한다.




LPSTARTUPINFO


typedef struct _STARTUPINFO{

DWORD cb;                //구조체 변수의 크기

LPTSTR lpReserved;

LPTSTR lpDesktop;

LPTSTR lpTitle;          //콘솔 윈도우의 타이틀 바 제목

DWORD dwX;            //프로세스 윈도우의 x좌표

DWORD dwY;            //프로세스 윈도우의 y좌표  

DWORD dwXSize;     //프로세스 윈도우의 가로 길이

DWORD dwYSize;     //프로세스 윈도우의 세로 길이

DWORD dwXCountChars;

DWORD dwYCountChars;

DWORD dwFileAttribute;

DWORD dwFlags;    //설정된 멤버의 정보

WORD wShowWindow;

WORD cbReserved2;

LPBYTE lpReserved2;

HANDLE hStdInput;

HANDLE hStdOutput;

HANDLE hStdError;

} STARTUPINFO, *LPSTARTUPINFO;


LPPROCESS_INFORMATION


typedef struct _PROCESS_INFORMATION

{

HANDLE hProcess;        //프로세스의 핸들

HANDLE hThread;         //쓰레드 핸들

DWORD dwprocessId;    //프로세스의 ID

DWORD dwThreadId;      //쓰레드ID

} PROCESS_INFORMATION;

DWORD cb; 를 보면 구조체의 크기인데 왜 구조체가 정해져잇는데 구조체의 크기를 인자로 전달하는 걸까?

CreateProcess 함수를 보면 9번째 인자는 LPSTARTUPINFO로 확정되어있다.

그런데 나중에 다른인자를 올수있게 라이브러리를 개편한다면 전과의 호환성을 위해 구조체를 구별 할 수있게 전달하는 것이다.



예제 5-1]



AdderProcess 자식프로세스 단순덧셈프로세스

CreateProcess 부모프로세스 AdderProcess를 실행시키는 예제이다.


표준 검색경로

1 실행중인 프로세스의 실행파일이 존재하는 디렉터리

2 실행중인 프로세스의 현재 디렉터리(Current Directory)

3 Windows의 시스템디렉터리 (System Directory)

4 Windows 디렉터리 (Windows Directory)

5 환경변수 PATH에 의해 지정되어 있는 디렉터리




실행결과

 







+ Recent posts