12
私のプロセスは何度もフォークし、子供がexecするたびに、別のプログラムを実行したいということです。Linuxでファイルを開くときに、いつO_CLOEXECを使うべきですか?
メインプロセスでは、open()
システムコールでファイルディスクリプタを開きます。
フラグO_CLOEXEC
を入力して、exec()
で実行する新しいプログラムにfdリソースがないようにしてください。
私のプロセスは何度もフォークし、子供がexecするたびに、別のプログラムを実行したいということです。Linuxでファイルを開くときに、いつO_CLOEXECを使うべきですか?
メインプロセスでは、open()
システムコールでファイルディスクリプタを開きます。
フラグO_CLOEXEC
を入力して、exec()
で実行する新しいプログラムにfdリソースがないようにしてください。
プログラムを実行する必要がある場合を除いて、execはそのファイル記述子にアクセスできます。 execを呼び出す前に子プロセスでファイル記述子を手動で閉じることもできますが、それはエラーが発生しやすくなります。
'execve'の直前で' for(int = 3; i <256; i ++)close(i); 'を実行すると、stdin、stdout、stderrだけが残っていました。 。 –