일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- query
- c++
- System
- 투자
- API
- OOP
- function
- Sort
- java
- algorithm
- Call-by-reference
- jsp
- beans
- 포인터
- windows
- request
- 노드
- array
- 악성코드
- UTF-8
- C
- WebProgramming
- 자료구조
- HTML
- CLASS
- 윈도우즈
- JavaScript
- CSS
- Kafka
- meta
Archives
- Today
- Total
hahahia
프로세스 생성 소스코드 본문
- 부모 프로세스에서 받은 두개의 인자를 자식 프로세스에서 받아
두 개의 합을 출력하는 프로그램입니다....
/* Process.cpp */
// 자식 프로세스
#include <stdio.h>
두 개의 합을 출력하는 프로그램입니다....
/* 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라는 타이틀의 콘솔이 하나 더 실행되는 것을 볼 수 있다.
출처 : 윈도우즈 시스템 프로그래밍 | 윤성우 저 | 한빛미디어
- 참고로 C드라이브에 Winsystem 폴더를 생성한 후 process.cpp에서 컴파일해 만들어진 process.exe 파일을 Winsystem 폴더에 넣어야 한다.
- 현재 디렉터리에 있는 process.exe파일을 CreateProcess를 통해 실행시키는 과정이다.
출력화면
- CreateProcess.exe 실행시....
- i am a boy라는 타이틀의 콘솔이 하나 더 실행되는 것을 볼 수 있다.
출처 : 윈도우즈 시스템 프로그래밍 | 윤성우 저 | 한빛미디어
'Windows Programming > Windows::System' 카테고리의 다른 글
커널 오브젝트와 오브젝트 핸들 02 (0) | 2012.03.14 |
---|---|
커널 오브젝트와 오브젝트 핸들 01 (0) | 2012.03.14 |
시스템 디렉터리와 Windows 디렉터리 예제 소스 (0) | 2012.03.06 |
프로세스의 생성(CreateProcess 함수 및 STARTUPINFO 구조체) (0) | 2012.03.06 |
프로세스와 스케줄링 및 컨텍스트 스위칭 (0) | 2012.03.06 |
Comments