hahahia

프로세스 생성 소스코드 본문

Windows Programming/Windows::System

프로세스 생성 소스코드

hahahia 2012. 3. 6. 21:35
- 부모 프로세스에서 받은 두개의 인자를 자식 프로세스에서 받아
  두 개의 합을 출력하는 프로그램입니다....

/* Process.cpp */
// 자식 프로세스 
#include <stdio.h>
#include <tchar.h>
#include <windows.h>

int _tmain(int argc, TCHAR* argv[])
{
DWORD val1, val2;
val1 = _ttoi(argv[1]);
val2 = _ttoi(argv[2]);

_tprintf(_T("%d + %d = %d\n"), val1, val2, val1+val2);

_gettchar(); // 프로그램의 실행을 잠시 멈추기 위해
return 0;
}

/* CreateProcess.cpp */
// 부모 프로세스(자식 프로세스를 생성)

#include <stdio.h>
#include <tchar.h>
#include <windows.h>

#define DIR_LEN MAX_PATH+1

int _tmain(int argc, TCHAR * argv[])
{
STARTUPINFO si={0,};
PROCESS_INFORMATION pi;

si.cb = sizeof(si); // 구조체 변수의 크기
si.dwFlags = STARTF_USEPOSITION | STARTF_USESIZE;
si.dwX = 100;
si.dwY = 200;
si.dwXSize = 300;
si.dwYSize = 200;
si.lpTitle = _T("i am a boy"); // 콘솔 윈도우의 타이틀 바 제목
TCHAR command[] = _T("Process.exe 10 20"); // 생성할 프로세스의 이름정                                                                                보및 인수 전달
TCHAR cDir[DIR_LEN];
BOOL state;

GetCurrentDirectory(DIR_LEN, cDir); // 현재 디렉터리 확인
_fputts(cDir, stdout);
_fputts(_T("\n"), stdout);

SetCurrentDirectory(_T("C:\\WinSystem"));
GetCurrentDirectory(DIR_LEN, cDir); // 현재 디렉터리 확인
_fputts(cDir, stdout);
_fputts(_T("\n"), stdout);

state = CreateProcess( // 프로세스 생성
NULL, // 실행파일의 이름
command, // main 함수에 전달될 문자열(첫번째 인자를 NULL, 두번째                                         인자를 통해 생성하려는 
                 // 프로세스 이름 정보까지 함께 전달
NULL, NULL, TRUE, 
CREATE_NEW_CONSOLE, // 새롭게 생성하는 프로세스를 위한 콘솔 윈                                                         도우가 독립적으로 생성
NULL, NULL, &si, &pi); 
if(state!=0)
_fputts(_T("Creation OK! \n"), stdout);
else
_fputts(_T("Creation Error! \n"), stdout);

return 0;
}

- 참고로 C드라이브에 Winsystem 폴더를 생성한 후 process.cpp에서 컴파일해 만들어진 process.exe 파일을 Winsystem 폴더에 넣어야 한다.
- 현재 디렉터리에 있는 process.exe파일을 CreateProcess를 통해 실행시키는 과정이다. 

출력화면
- CreateProcess.exe 실행시....
- i am a boy라는 타이틀의 콘솔이 하나 더 실행되는 것을 볼 수 있다.

 
 출처 : 윈도우즈 시스템 프로그래밍 | 윤성우 저 | 한빛미디어
Comments