프로세스

프로세스란 실행중인 프로그램을 말한다.

서로 다른 메모장 프로그램이 두 개 실행 되었을 때  두 개는 같은 프로그램이지만 각각 다른 프로세스로 인식된다.

스레드

윈도우에서 작업을 처리하는 주체

프로세스는 스레드를 담는 그릇이며 실제적인 처리는 스레드에서 담당한다.

프로세스는 하나 이상의 스레드를 가질 수 있다.


프로세스의 생성

WinExec , CreateProcess

WinExec사용하기 편리하나 제어하는 옵션이 부족하다. 되도록이면 CreateProcess를 사용하자

WinExec 는 프로세스가 초기화 되기전에 리턴하므로 CreateProcess와 달리 Findwindow함수로 바로 프로세스를 찾을 수 있다. 


CreateProcess 

10개의 인수를 가지며 반드시 필요한 인수는 아래 4개이다.


lpApplicationName

-실행 하고자 하는 프로그램의 이름(절대 경로를 사용해야한다.)


lpCommandLine

-명령행 인수  

(lpApplicationName 아니면 이 인수 둘중에 하나만 사용할 수는 있지만 둘다 생략은 불가능하다.)


lpStartupInfo

-새로 만든 프로세스의 메인 윈도우 초기화 값


lpProcessInformation 

-생성된 프로세스의 정보를 대입받기 위함



<FindProc>




<프로세스의 아이디를 이용하여 프로세스를 찾고 종료하기>

ProcB


ProcA라는 프로세스에서 메모장 프로세스를 실행한 후 ProcB프로세스에게 이 메모장 프로세스의 아이디를 보낸다. ProcB는 현재 실행중 인 프로세스들에서 A에게서 받은 아이디를 가진 메모장 프로세스의 핸들을 찾아 종료한다.


프로세스 ID

정해진 것은 아니며 실행중인 프로그램에게 일련번호를 부여한 것이다. 

이 값은 고유하고 프로그램이 끝나면 재활용 가능하다.


복사했습니다!