我知道这可以在用户空间中完成,并且已经回答before。
但是,我希望能够通过内核函数/模块来实现。
更新
c代码(从另一个回答的问题中提到)是criu项目的一部分。并且所有系统中都不存在文件/proc/sys/kernel/ns_last_pid
。所以,代码不适用于ubuntu。有什么方法可以让它在ubuntu上运行吗?
我的最终目标是:fork一个进程并为其提供父进程的ID。
步骤:使用ID为。
的进程名称P进行凝视我知道如何执行步骤4-5。我已经实现了。我正在攻击另一个Linux内核项目。所以,我没有办法解决这个问题。我必须以这种方式实施。
谢谢大家。
答案 0 :(得分:0)
内核假定进程由其pid标识;如果不改变整个内核的大量代码,更改已经运行的进程的pid是不可能的。
要为进程Q提供与进程P相同的pid,请使用第三个进程R,它在P终止之后但在Q启动之前设置ns_last_pid
。
(有关如何使用ns_last_pid
,请参阅this example。)