プロセスが子プロセスを分岐()すると、2つのプロセスが関連付けられます。子プロセスは、パイプや匿名メモリマップなどの一部のIPCオブジェクトを含む、親プロセスから多くを継承します。
子プロセスexecve()が実行可能ファイルの場合、親プロセスと子プロセスは関係ありませんか?そのプロセスにのみ適用されるものはもう有効ではありませんか?
たとえば、次の文は正しいですか?
シェルプロセスは実行可能ファイルをexecve()するために子プロセスをfork()しますか?
シェルプロセスとそのサブプロセスは、そのプロセスのIPCメカニズムを介してのみ通信できますか?
ありがとうございます。
ベストアンサー1
execve()
メモリを完全に交換してください。
開いたままになるようにマークされていないファイルハンドルを閉じます。 (通常、STDIN、STDOUT、およびSTDERRはこのように表示されます。)フラグを参照してくださいO_CLOEXEC
。 (より正確に言えば、クローズとしてマークされたファイル記述子を閉じます。)
シグナルハンドラをリセットしますが、SIG_IGNとSIG_DFLは変更されません。
上位/下位関係や制御端末は変更されません。
SysV IPCオブジェクトについてはわかりませんが、最初から特定のプロセスメモリに存在するとは思いません。