2013-03-16 6 views
12

私のプロセスは何度もフォークし、子供がexecするたびに、別のプログラムを実行したいということです。Linuxでファイルを開くときに、いつO_CLOEXECを使うべきですか?

メインプロセスでは、open()システムコールでファイルディスクリプタを開きます。

フラグO_CLOEXECを入力して、exec()で実行する新しいプログラムにfdリソースがないようにしてください。

答えて

12

プログラムを実行する必要がある場合を除いて、execはそのファイル記述子にアクセスできます。 execを呼び出す前に子プロセスでファイル記述子を手動で閉じることもできますが、それはエラーが発生しやすくなります。

+1

'execve'の直前で' for(int = 3; i <256; i ++)close(i); 'を実行すると、stdin、stdout、stderrだけが残っていました。 。 –

関連する問題