FILE*
Mac OS X の C でa を複製する必要があるため(int
残念ながら、POSIX ファイル記述子をずっと使用することは問題外です)、次の関数を思いつきました。
static FILE* fdup(FILE* fp, const char* mode)
{
int fd = fileno(fp);
int duplicated = dup(fd);
return fdopen(duplicated, mode);
}
fdopen
どうやらそれ自体を決定できないため、ファイルモードを再度要求する小さな醜い部分があることを除いて、それは非常にうまく機能します。
この問題は重要ではありません。基本的にはstdin
、 、stdout
およびに使用しているだけだからですstderr
(明らかに、これら 3 つのアクセス モードを知っています)。ただし、自分で知る必要がなければ、よりエレガントになります。dup
呼び出しには必要ないため、これはおそらく可能です。
FILE*
ストリームのアクセス モードを確認するにはどうすればよいですか?