プロセスの親プロセスを変更することは可能ですか?はいの場合、どのように?
例えば、
セッションとその中で実行されているプロセスを異なるシェルプロセスにどのよう
screen
にアタッチするのscreen
ですか?親プロセスに変更はありますか?プログラムが実行されているシェルプロセスを変更する他の方法を聞いたようですが、覚えていません。プログラムの親プロセスの変更もありますか?
disown
名前disown
がそれを暗示しているという理由だけで、プロセスがプロセスの親プロセスを変更すると考えました。しかし、私はそれが真実ではないことがわかりました。Emacsクライアントは、異なる端末タブでemacsサーバーに接続できます。親プロセスに変更はありますか?
getppid(2)
は、システムコールを呼び出し、システムコールはカーネルによって処理されます。プログラムは、その呼び出しを発行し、値を保存し、親子関係が変更された後にその値を使用することで混乱する可能性があります。ここで競合状態になる可能性があります。
disown
シェルの内部プロセスの子プロセスから特定の子を削除するだけです。子のPPIDはシェルのPPIDのままです。シェルは、その子を起動したことを忘れていましたが、カーネルは記憶しています。