c++ 获取某个进程pid
时间: 2023-09-11 19:04:24 浏览: 246
在 Windows 平台,可以使用 `CreateToolhelp32Snapshot` 和 `Process32First/Process32Next` 函数来获取进程信息,包括 PID。
以下是一个简单的示例代码:
```cpp
#include <Windows.h>
#include <TlHelp32.h>
#include <iostream>
DWORD GetProcessIdByName(const char* processName)
{
DWORD pid = 0;
HANDLE snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 pe;
pe.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(snap, &pe))
{
do {
if (_stricmp(pe.szExeFile, processName) == 0)
{
pid = pe.th32ProcessID;
break;
}
} while (Process32Next(snap, &pe));
}
CloseHandle(snap);
return pid;
}
int main()
{
DWORD pid = GetProcessIdByName("notepad.exe");
std::cout << "PID: " << pid << std::endl;
return 0;
}
```
该示例代码中的 `GetProcessIdByName` 函数可以根据进程名获取 PID。
在 Linux 平台,可以使用 `pidof` 命令来获取进程 PID,也可以使用 `ps` 命令结合管道和 `grep` 命令来实现。在 C++ 中,也可以使用 `popen` 函数调用命令,然后解析命令输出来获取 PID。
阅读全文