是否有可能改变一个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
,并确保你能够很好地理解细节。