ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CreateProcess
    Language & 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;

     

    출처: http://carpedm20.blogspot.com/2012/08/1_5727.html

    반응형

    'Language & DB > C++' 카테고리의 다른 글

    IPC - PIPE  (0) 2019.10.12
Designed by Tistory.