我想知道是否有某种方法可以在运行某些应用程序之前强制使用 Linux 的某些特定进程 ID。我需要提前知道进程ID。
实际上,有一种方法可以做到这一点。自内核 3.3 设置了 CONFIG_CHECKPOINT_RESTORE(在大多数发行版中设置)以来,/proc/sys/kernel/ns_last_pid 包含内核生成的最后一个 pid。所以,如果你想为fork程序设置PID,你需要执行以下操作:
- 打开/proc/sys/kernel/ns_last_pid并获取fd
- 使用 LOCK_EX 对其进行填充
- 写入PID-1
- fork
瞧!孩子将会有你想要的PID。
另外,不要忘记解锁(使用 LOCK_UN 进行锁定)并关闭 ns_last_pid。
你可以在我的博客上查看 C 代码here http://efiop-notes.blogspot.com/2014/06/how-to-set-pid-using-nslastpid.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)