티스토리 뷰
프로세스 실행 함수
CreateProcessW(
1) LPCWSTR lpApplicationName,
2) LPWSTR lpCommandLine,
3) LPSECURITY_ATTRIBUTES lpProcessAttributes,
4) LPSECURITY_ATTRIBUTES lpThreadAttributes,
5) BOOL bInheritHandles,
6) DWORD dwCreationFlags,
7) LPVOID lpEnvironment,
8) LPCWSTR lpCurrentDirectory,
9) LPSTARTUPINFOW lpStartupInfo,
10) LPPROCESS_INFORMATION lpProcessInformation
);
1 : 생성할 프로세스의 실행파일 이름을 인자로 전달한다. 경로명을 추가로 지정할 수 있으며, 경로명을 지정하지 않을 경우 프로그램의 현재 디렉토리에서 실행파일을 찾게 된다.
2: 함수의 인자전달할때 사용
3 : 프로세스의 보안속성 설정, 기본 NULL
4 : 쓰레드의 보안속성 NULL이 Deafult
5 : True인 경우, 생성되는 자식 프로세스는 부모 프로세스가 소유하는 핸들 중 일부 상속
6: 생성하는 프로세스의 특성을 결정지을 때 사용하는 옵션
7 : 메모리 블록 관리 설정
8 : 프로세스의 현재 디렉토리를 설정하는 인자
9 : STARTUPINFO 구조체 변수를 초기화한 다음에 이 변수의 포인터를 인자로 전달한다.
10 : 생성하는 프로세스의 정보를 얻기 위해 사용되는 인자
예제
더보기
Main
#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 = (LPSTR)_T("I am a boy!");
//프로세스 명령어
TCHAR command[] = _T("AddrProcess.exe 20 20");
TCHAR cDir[DIR_LEN];
BOOL state;
//현재 디렉토리 정보 얻어오기 ( 크기, Buffer )
GetCurrentDirectory(DIR_LEN, cDir);
_fputts(cDir, stdout);
_fputts(_T("\n"), stdout);
//현재 디렉토리 변경
SetCurrentDirectory(_T("C:\\"));
GetCurrentDirectory(DIR_LEN, cDir);
_fputts(cDir, stdout);
_fputts(_T("\n"), stdout);
//프로세스 생성
state = CreateProcess(
NULL,
command,
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;
}
AddressProcess.exe
#pragma warning(disable:4996)
#define UNICODE
#define _UNICODE
#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;
}
'서버 공부 > 시스템 프로그래밍' 카테고리의 다른 글
쓰레드 구현 모델 (0) | 2022.07.28 |
---|---|
(IPC통신) Named Pipe 통신 (0) | 2022.07.27 |
CMD 창 만들기 ( 6장 ) (0) | 2022.07.27 |
프로세스란? (0) | 2022.07.26 |
유니코드 형식 프로그래밍 (0) | 2022.07.13 |
댓글