popen 함수를 이용하면 됩니다. popen 함수는 system 함수처럼 명령 프롬프트를 실행할 수 있을 뿐만 아니라 명령을 수행했을때 나오는 출력값을 반환합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <stdlib.h> #include <string.h> #include <iostream> using std::cout; using std::endl; int main(void) { FILE* file; char output[300]; char * command = "tasklist /FI \"IMAGENAME eq chrome.exe\""; file = _popen(command, "r"); fread(output, 1, sizeof(output), file); fclose(file); if(strstr(output,"chrome.exe")) { cout << "Google Chrome is running" << endl; } else { cout << "Google Chrome is not running" << endl; } return 0; } |
위 코드를 실행하면 구글 크롬 프로세스가 돌아가고 있는지 확인할 수 있습니다.
명령어를 실행했을 때 해당 프로세스가 존재하지 않으면 결과값에 프로세스 이름이 없고 그 반대면 이름이 있는 것을 이용해 짠 코드입니다.
윈도우 API 중 CreateToolhelp32Snapshot를 이용하면 같은 결과를 이끌어낼 수 있습니다. StackOverflow에 [예제 코드]가 있네요.