C & Docker & LINUX

C++ ) 특정 프로세스 PID 검색하기

로픽 2019. 10. 25. 18:22
300x250

크롬 프로세스(Chrome.exe) PID 검색하기

#include <Windows.h>
#include <TlHelp32.h>
#include <stdio.h>

DWORD pid = 0;

BOOL Search_Pid(const char *szProcessName)
{
	//시스템 프로세스에 대한 전체 스냅샷 찍기
	HANDLE hndl = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	DWORD dwsma = GetLastError();

	//스냅샷 찍은 프로세스에 대한 실행파일 이름, 프로세스 정보, PPID에 대한 정보를 저장한 구조체
	PROCESSENTRY32 procEntry = { 0 };
	procEntry.dwSize = sizeof(PROCESSENTRY32);
	//스냅샷에 첫번째 프로세스를 검색
	Process32First(hndl, &procEntry);

	while (1)
	{
		//실행파일의 이름을 비교하여 같으면 pid 값을 저장해둠
		if (!strcmp(procEntry.szExeFile, szProcessName))
		{
			pid = procEntry.th32ProcessID;
			CloseHandle(hndl);
			return TRUE;
		}
			
		//시스템 스냅샷에 등록된 다음 프로세스에 대한 정보를 검색(스냅샷, processEntry32 구조체)
		if (!Process32Next(hndl, &procEntry))
		{
			return FALSE;
		}
	}

	CloseHandle(hndl);
	return FALSE;
}

void main()
{
	system("mode con cols=56 lines=20 | title 테 스 트");
	if (Search_Pid("chrome.exe"))
		printf("PID : %d\n",  pid);
	else
		printf("PID 검색 실패\n");
	return;
}
반응형