【问题标题】:ms c++ get pid of current processms c++获取当前进程的pid
【发布时间】:2010-09-22 19:58:39
【问题描述】:

我的应用程序的一部分在 windows 下的 C++ 中。我需要当前进程的进程 ID。有什么想法吗?

【问题讨论】:

  • 我第一次读它是“摆脱当前进程”:)
  • @Otherside 让我在词汇表中查找

标签: c++ windows process pid


【解决方案1】:

GetCurrentProcessId 函数将执行此操作。

【讨论】:

【解决方案2】:

我已经习惯了看到码码来完成看似简单的任务,我对GetCurrentProcessId 的直接性感到惊喜。今天早些时候,我看到它在调试器中运行,当时我在 DllMain 例程中跟踪了一段新代码,该例程将进程 ID 与嵌入式 GUID 结合起来,为互斥体创建本地唯一名称。

以下是整个例程,所有三个机器指令。

mov         eax,fs:[00000018]
mov         eax,dword ptr [eax+20h]
ret

顺便说一句,另外两个非常简单的 Windows API 函数是 GetLastErrorSetLastError;确实,两者都与这个非常相似。

【讨论】:

  • 我忘了在那个“短小精悍”的组中提到 GetProcessHeap。
【解决方案3】:

您可以使用 getpid()_getpid() ,它们在 <process.h> 库中定义。

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/getpid?view=vs-2019

【讨论】:

  • 正如 Greg Hewgill 在接受的答案中已经提到的那样,_getpid() 只是调用 GetCurrentProcessId(),这是返回进程 ID 的最低级别函数。
  • 其实在我写这个答案之前,我试过GetCurrentProcessId()但是我运行不了,因为我没有包含<windows.h>库,这个在之前的答案中没有提到。经过几次尝试,我明白了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-10
  • 1970-01-01
  • 2012-07-02
  • 2021-08-08
  • 2016-01-31
相关资源
最近更新 更多