C++获取其他进程的PID
时间: 2024-05-02 11:17:17 浏览: 144
C++实现PID算法
5星 · 资源好评率100%
在 C++ 中,获取其他进程的 PID 可以使用操作系统提供的 API 函数。以下是一些常用的方法:
1. 使用 Windows API 函数 GetProcessId 获取指定进程的 PID,如下所示:
```
#include <Windows.h>
DWORD GetProcessIdByName(const char* processName)
{
DWORD pid = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshot != INVALID_HANDLE_VALUE) {
PROCESSENTRY32 pe;
pe.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hSnapshot, &pe)) {
do {
if (strcmp(pe.szExeFile, processName) == 0) {
pid = pe.th32ProcessID;
break;
}
} while (Process32Next(hSnapshot, &pe));
}
CloseHandle(hSnapshot);
}
return pid;
}
```
2. 使用 Linux API 函数 getpid 获取当前进程的 PID,然后使用系统调用 kill 或 ptrace 等函数来操作指定进程,如下所示:
```
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
void KillProcess(pid_t pid)
{
kill(pid, SIGTERM);
}
void AttachProcess(pid_t pid)
{
ptrace(PTRACE_ATTACH, pid, NULL, NULL);
}
```
注意,获取其他进程的 PID 可能需要特权或权限,具体取决于操作系统和进程的安全设置。
阅读全文