改变一个进程的父母

是否有可能改变一个stream程父母?
例如:父母A有孩子B我可以让父母的B是没有杀死A的初始程序?

不是来自过程B之外的

从流程B的内部,你可以调用fork来创建你的进程的副本,然后让原来的退出。 当发生这种情况时,新的副本B2不会是A的子元素,其父元素将被设置为1(init进程)。

调用ptrace(PTRACE_ATTACH, pid, x, y)其中pid是B(在你的例子中)的pid,x和y无关紧要(可能设置为NULL)会使调用进程成为B的父进程但不是全部)目的(基于进程的用户标识进行限制,当然,除非你是root用户,否则不能接管别人的进程)。

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

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