fopen(3)の第二引数(mode)に指定できる文字といえば、"r"や"w"や"a"などですが、glibcのfopenにはいくつかの追加modeがあります。
その中の"e"を使うと、open(2)を呼ぶときにO_CLOEXEC
フラグを指定するようになります。O_CLOEXEC
については、小崎さんのKernel Watchの記事「ファイルディスクリプタリークを防げ!」に詳しい説明があります。簡単に言うと、フラグを指定してopenしたファイルディスクリプタは、exec時に自動的にcloseされるようになるという機能です。これを常に指定しておくと、forkとexecの間で全ファイルディスクリプタをcloseして回ったりしなくても済みます。
互換性のため無理でしょうけど、本来ならばO_CLOEXEC
の挙動の方がデフォルトの方がセキュリティ的に良いでしょうね。