如何在Linux中为特定程序设置进程ID

我想知道在运行之前是否有某种方法可以强制使用某些特定的进程ID到Linux。 我需要事先知道进程ID。

谢谢

Solutions Collecting From Web of "如何在Linux中为特定程序设置进程ID"

其实,有一个办法可以做到这一点。 由于内核3.3 CONFIG_CHECKPOINT_RESTORE设置(在大多数发行版中设置),因此/ proc / sys / kernel / ns_last_pid包含由内核生成的最后一个pid。 所以,如果你想为分支程序设置PID,你需要执行这些操作:

  1. 打开/ proc / sys / kernel / ns_last_pid并得到fd
  2. 与LOCK_EX一起
  3. 写PID-1
  4. 叉子

瞧! 孩子将有你想要的PID。 此外,不要忘记解锁(LOCK_UN群)并关闭ns_last_pid。

你可以在我的博客在这里签出C代码。

没有办法强制使用特定的PID进程。 正如维基百科所说:

进程ID通常是按顺序分配的,从0开始并上升到一个随系统而不同的最大值。 一旦达到这个限制,分配在300重新开始并且再次增加。 在Mac OS X和HP-UX中,分配将从100开始重新开始。但是,对于此过程以及随后的过程,任何仍分配给进程的PID都将被跳过

正如许多人已经建议的,你不能直接设置一个PID,但通常shell有设施知道哪个是最后一个分叉进程ID。

例如在bash中,你可以在后台用一个可执行文件(附加& )来查找它的PID,并在变量$!找到它的PID $! 。 例:

 $ lsof >/dev/null & [1] 15458 $ echo $! 15458 

linux系统上的每个进程由fork()生成,所以不应该强制一个特定的PID。