【问题标题】:C++ specify process id when creating processC++在创建进程时指定进程ID
【发布时间】:2015-02-16 16:29:43
【问题描述】:

CreateProcess 包含一个 PROCESS_INFORMATION 结构,该结构指定为创建的进程选择的进程 ID。

如何指定创建进程时使用哪个进程ID?

【问题讨论】:

  • 你为什么需要那个?困惑。

标签: c++ pid


【解决方案1】:

您根本无法指定进程 ID。它由操作系统选择。

假设您可以指定一个进程 ID。操作系统必须锁定其内部进程列表结构,以便查找进程 ID 是否已经存在。如果没有,以防止创建具有相同 ID 的任何其他进程。这当然会增加内核的复杂性,而程序员并没有真正受益。

在不指定进程 ID 的情况下,操作系统可以原子地增加一个计数器来确定下一个进程 ID,这样更容易更快。

【讨论】:

    【解决方案2】:

    在 CreateProcess 函数中,PROCESS_INFORMATION 不是输入参数。它是函数的输出参数。因此,无论您尝试分配什么进程 ID,该参数都将被内核覆盖。 查看https://msdn.microsoft.com/en-us/library/windows/desktop/ms682512(v=vs.85).aspx中的示例用法。

    【讨论】:

      猜你喜欢
      • 2012-11-29
      • 1970-01-01
      • 2014-11-03
      • 2017-06-19
      • 2015-02-12
      • 2012-09-02
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多