2012-03-09 20 views
8

fopenのmanページを見て、私はこの質問に明確な答えを得ることができません。fopenはファイル記述子を作成しますか?

FILE *fopen(const char *path, const char *mode); 

私はfopenは、ストリームにファイルポインタを返しますが、副産物として作成されたファイルディスクリプタであることを理解できますか?ファイルディスクリプタが作成されるたびにフラグFD_CLOEXECを含めるようにしています。ファイルディスクリプタが実際にfopenから作成されている場合、入力として使用する "fd"がない場合は、fnctl()を使用する最良の方法は何ですか。

ありがとうございました。 fopen(3)が最終的open(2).を呼び出すとUnixでは

答えて

16

(あなたがfcntlに言及しているので、私はあなたが使用していると仮定している)、それあなたはfileno(3)を経由して、そのファイルディスクリプタを取得することができ、ファイルディスクリプタを開くありません。

関連する問題