【问题标题】:Are process IDs assigned sequentially in Linux?Linux 中的进程 ID 是按顺序分配的吗?
【发布时间】:2013-12-12 10:02:31
【问题描述】:

如果一个程序的进程 ID 为 P,子进程(及其子进程)的进程 ID 是否严格大于 P?

当重用进程 ID 时,会选择哪些进程 ID,例如,最低的进程 ID 是否可用?

【问题讨论】:

  • 真的重要吗?
  • @HAL 这无助于回答问题
  • 真的不是编程问题,而是Linux问题。
  • 看看这个帖子,这个好像解释了superuser.com/questions/135007/how-are-pids-generated
  • @Sash 这不是答案。只是想知道知道这将如何影响您的程序。

标签: linux process pid


【解决方案1】:

来自http://en.wikipedia.org/wiki/Process_identifier

进程 ID 通常是按顺序分配的,从 0 并上升到最大值,该最大值因系统而异。 一旦达到此限制,分配将在 300 处重新开始,然后再次 增加。在 Mac OS X 和 HP-UX 中,分配在 100 处重新开始。但是, 对于这个和随后的传递,仍然分配给进程的任何 PID 被跳过。有些人认为这是一种潜在的安全 漏洞,因为它允许有关系统的信息 提取或消息在进程之间秘密传递。作为 例如,特别关注安全性的实现 可以选择不同的 PID 分配方法。[1]在某些系统上, 像 MPE/iX 一样,使用最低的可用 PID,有时是为了努力 尽量减少内存中进程信息内核页的数量。

原答案:https://superuser.com/questions/135007/how-are-pids-generated

【讨论】:

    【解决方案2】:

    每个新进程都提供进程ID,每个进程都有唯一的进程ID。 该id是非整数值,一旦进程终止,进程id就会被重用 这意味着终止进程 ID 再次用于另一个进程 内核创建的最大进程id,最大pid为32768 存储在 /proc/sys/kernel/pid_max 该文件中的最大 pid 包含最大 pid 。 一旦再次超过 pid 的限制,它将启动为该进程分配的未使用的进程 ID。 内核为使用 fork() 系统调用创建的进程 ID。

    【讨论】:

      猜你喜欢
      • 2012-03-23
      • 2021-12-17
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      相关资源
      最近更新 更多