Mac OS X (tüm yol söz konusu maalesef POSIX int
dosya tanımlayıcıları kullanarak) üzerinde C bir FILE*
çoğaltmak için var, bu yüzden aşağıdaki işlevi ile geldi: Çok iyi çalışıyor`FILE *` erişim kipini alabilir miyim?
static FILE* fdup(FILE* fp, const char* mode)
{
int fd = fileno(fp);
int duplicated = dup(fd);
return fdopen(duplicated, mode);
}
Ancak, dosya modunu tekrar istediğim küçük çirkin kısım var, çünkü fdopen
görünüşe göre kendini belirleyemiyor.
Bu sorun
temelde beri, sadecestdin
,
stdout
ve
stderr
için kullanıyorum (ve tabii ki ben o üç erişim modlarını biliyorum), kritik değildir. Ancak,
'u kendim bilmem gerekirse daha zarif olur; ve bu muhtemelen
dup
aramasına ihtiyaç duymadığı için mümkündür.
FILE*
akışının erişim modunu nasıl belirleyebilirim?