デーモンがinit(Pid 1)にリセットされると、元のPPIDはどこに保存されますか?

デーモンがinit(Pid 1)にリセットされると、元のPPIDはどこに保存されますか?

答えは「いいえ」であると確信していますが、デーモンをデーモン化し、その後に親を再割り当てする前に、デーモンの元の親プロセスを復号化することが可能かどうか疑問に思います。

答え1

答えはOSによって異なりますが、少なくともLinuxでは、関連プロセスが情報をどこかに記録しない限り、元の親プロセスのメモリはありません。

Linuxカーネル両方の親プロセスを追跡します。しかし、これはptrace元の親プロセスを追跡しないためです。それにもかかわらず、プロセスが終了するとそのデータ構造が削除されるため、指す情報はなく、元の親プロセスpidを維持することはpidがリサイクルされるため、最終的に誤解を招く可能性があります。

答え2

いいえ。

直接追跡する必要があります。 Linuxでは、次のものを構築できます。本物、過去のプロセスツリーを使用してプロセスコネクタしかし、残念ながら、機能自体は非常に高速です。 proc_connector を使用するプログラム例は次のとおりです。キツネの塔

実際にやりたいことをよりよく説明してください。

ptracing/のようないくつかの単純だが一般的ではないトリックがあります。機銃所事親プロセスまたはすべての子に継承される親プロセスに環境変数を設定します。

注:Linuxでは、子プロセスをPID 1(「サブリッパー」)以外のプロセスに再割り当てできます。

関連情報