fopen()
の呼び出しによって返されるFILE *
があります。 fsync(fd)
のような呼び出しを行うために、そこからファイル記述子を取得する必要があります。ファイルポインタからファイル記述子を取得する機能は何ですか?
適切な関数はint fileno(FILE *stream)
です。 <stdio.h>
にあり、POSIX標準ですが、標準Cではありません。
fileno(FILE *)
がファイル記述子を返す場合でも、stdioのバッファをバイパスしないように非常に注意してください。バッファーデータがある場合(読み取りまたはフラッシュされていない書き込み)、ファイル記述子からの読み取り/書き込みにより、予期しない結果が生じる可能性があります。
サイド質問の1つに答えるために、ファイル記述子をFILEポインターに変換するには、fdopen(3)
を使用します