子プロセスでDUP2とEXECVPを呼び出した後、親プロセスのファイル記述子表はどうなりますか?
質問
私は単純なシェルプログラムをコーディングしていますが、dup2()とexecvpの後にファイル記述子テーブルに何が起こるかがわからない。だから私は子供プロセスを終了するのを待っている親プロセス(waitpid)を持っていますが、次のユーザー入力を待つときにループバックすると、子プロセスでDUP2を使用して変更されたファイル記述子表はどのようにしていますか?EXECVPはファイル記述子テーブルを元の元に戻すのですか?
編集:私はそれを考え出した。FORK関数は実際にはファイル記述子表を含むプログラムイメージの別のコピーを作成して、親プロセスのFDテーブルが影響を受けません。
解決
何もしない。子プロセスは、fork()
によって作成されたときに親のファイル記述子のコピーを取得しますが、その後、その後は親に共有されていません。
(ファイル記述子テーブルが親と共有されていないが、ファイル記述子自体の状態は!親から親のコピーにも影響を与えます。)
所属していません StackOverflow