devo duplicare un FILE*
in C su Mac OS X (usando POSIX int
descrittori di file tutto il percorso è purtroppo fuori discussione), così mi si avvicinò con la seguente funzione:Posso ottenere la modalità di accesso di un `FILE *`?
static FILE* fdup(FILE* fp, const char* mode)
{
int fd = fileno(fp);
int duplicated = dup(fd);
return fdopen(duplicated, mode);
}
Funziona molto bene , tranne che ha quella piccola parte brutta in cui chiedo nuovamente la modalità file, perché apparentemente non è possibile determinare lo stesso fdopen
.
Questo problema non è critica, dal momento che in fondo, sto solo usando per stdin
, stdout
e stderr
(e, ovviamente, so che le modalità di accesso di questi tre). Tuttavia, lo sarebbe essere più elegante se non dovessi saperlo da solo; e questo è probabilmente possibile poiché la chiamata dup
non ne ha bisogno.
Come è possibile determinare la modalità di accesso di un flusso FILE*
?