21xrx.com
2024-12-22 21:30:31 Sunday
登录
文章检索 我的文章 写文章
C++如何获取进程的PID
2023-07-09 04:24:23 深夜i     --     --
C++ 进程 PID 获取

在编程中,有时需要获取正在运行的进程的PID(进程ID)。PID是操作系统对每个进程分配的唯一标识符,用于跟踪和管理进程。C++是一种流行的编程语言,也支持获取进程PID的功能。本文将介绍如何使用C++获取进程的PID。

一、使用Windows API获取进程的PID

在Windows操作系统上,可以使用Windows API(应用程序编程接口)中的函数来获取进程的PID。下面是使用C++语言编写的示例代码:


#include <windows.h>

#include <tlhelp32.h>

#include <tchar.h>

DWORD GetProcessIdByName(LPCTSTR szProcessName)

{

  DWORD dwProcessId = 0;

  HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

  if(hSnapshot != INVALID_HANDLE_VALUE)

  {

    PROCESSENTRY32 pe32 = { 0 };

    pe32.dwSize = sizeof(pe32);

    if(Process32First(hSnapshot, &pe32))

    {

      do

      {

        if(_tcsicmp(pe32.szExeFile, szProcessName) == 0)

        

          dwProcessId = pe32.th32ProcessID;

          break;

        

      }while (Process32Next(hSnapshot, &pe32));

    }

    CloseHandle(hSnapshot);

  }

  return dwProcessId;

}

上面的代码中使用了Windows API中的 CreateToolhelp32Snapshot() 和 Process32First() 函数,它们可以枚举系统中正在运行的所有进程,并获取它们的PID。这些函数使用了Win32结构体 PROCESSENTRY32,它包含了进程的一些基本信息,如进程名、进程ID等。在这个示例代码中,使用了进程名来查找进程ID。

二、使用Linux系统调用获取进程的PID

在Linux操作系统上,可以使用系统调用来获取进程的PID。下面是使用C++语言编写的示例代码:


#include <unistd.h>

pid_t GetProcessId()

{

  return getpid();

}

在Linux系统上可以使用 getpid() 函数来获取当前进程的PID。这个函数属于POSIX C库函数,在Linux、Unix以及其他一些类Unix操作系统上都可以使用。

总结

C++是一种强大的编程语言,可以跨平台运行,在不同的操作系统上都支持获取进程PID的功能。Windows操作系统上可以使用Windows API,Linux操作系统上可以使用系统调用。这些方法可以让程序获取正在运行的进程的PID,使其可以进行进一步的操作。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复