更改进程的父级

Abo*_*our 14 c linux process

是否可以更改流程父级?
例如:父A有孩子B我可以让B的父母是Init进程而不杀A吗?

nat*_*ose 15

调用ptrace(PTRACE_ATTACH, pid, x, y)其中pid是B的PID(在你的例子),x和y并不重要(可能将它们设置为NULL)将调用进程B的父许多(但不是全部)的目的(有限制基于用户当然,这些进程的ID是为了防止你接管别人的进程,除非你是root用户.

在调用之后ptrace(PTRACE_ATTACH,,子getppid()进程仍将获得其原始父进程或init的pid作为其父进程,但是跟踪进程将能够从进程B 调用wait并获取SIGCHLD.

这里有很多东西,所以你应该阅读man 2 ptrace并确保你很好地理解细节.


Ben*_*igt 14

不是来自流程B之外

从进程B内部,你可以调用fork来制作你的进程副本,然后让原来退出.当发生这种情况时,新副本B2将不是A的子节点,其父节点将设置为1(init进程).