-
CreateProcessLanguage & DB/C++ 2019. 10. 12. 08:29반응형
전처리 단
#include <windows.h>
#define DIR_LEN MAX_PATH+1 // MAX_PATH, windef.h에 선언되어 있음. 윈도우에서 허용하는 완전경로의 최대 길이
코드 단
STARTUPINFO si={0, }; // 선언과 동시에 초기화. CreateProcess 함수의 9번째 인자요소. 프로세스의 속성을 지정
// 0으로 초기화 해야함.
PROCESS_INFORMATION pi; // PROCESS_INFORMATION 구조체 변수는 새로 생성되는 프로세스 관련 정보를 얻기 위해 사용
TCHAR command[]=_T("AdderProcess.exe 10 20"); // 실행 파일의 이름과 함께 전달할 인자
TCHAR cDir[DIR_LEN]; // 디렉토리 정보가 저장될 버퍼 포인터
GetCurrentDirectory(DIR_LEN, cDir); // cDir 디렉토리 정보가 저장될 버퍼 포인터, DIR_LEN 디렉토리 정보가 저장될 메모리 버퍼의 크기
_fputts(cDir, stdout); // 현재 디렉토리 정보를 추출해서 출력
_fputts(_T("\n"), stdout);
SetCurrentDirectory(_T("C:\\WinSystem")); // 현재 디렉토리 경로명을 지정할 수 있음
GetCurrentDirectory(DIR_LEN, cDir); // 현재 디렉토리를 다시 확인
_fputts(cDir, stdout); // 현재 디렉토리 경로명을 다시 출력. C:\\WinSystem이 있어야 변경됨.
_fputts(_T("\n"), stdout);
state = CreateProcess (
NULL, // 첫번째 인자로 NULL을 전달하고
command, // 두번째 인자를 통해 생성하려는 프로세스 이름 정보와 함께 전달 인자까지 함께 전달할 수 있음.
// 전달 인자는 반드시 변수 형태여야 함. _T("AdderProcess.exe 10 20"),을 직접 파라미터에 쓰면 안됨.
NULL, NULL, TRUE,
CREATE_NEW_CONSOLE, // 프로세스의 특성을 결정지을 때 사용.
// CREATE_NEW_CONSOLE은 프로세스를 위한 콘솔 윈도우가 독립적으로 생성됨.
// CREATE_NEW_CONSOLE을 전달하지 않으면 부모 프로세스의 콘솔 윈도우를 자식 프로세스가 공유하게 됨
// CREATE_NEW_CONSOLE 대신 0을 전달해 확인할 수 있음
NULL, NULL, &si, &pi 50: );
if(state!=0)
_fputts(_T("Creation OK! \n"), stdout);
else
_fputts(_T("Creation ERROR! \n"), stdout);
return 0;
반응형'Language & DB > C++' 카테고리의 다른 글
IPC - PIPE (0) 2019.10.12