Powiel możliwe:
Getting Filename from file descriptor in CCzy istnieje sposób na pobranie nazwy pliku z pliku `FILE *`?
Czy istnieje prosty i (rozsądnie) przenośny sposób na uzyskanie nazwę pliku z pomocą FILE*
?
Otwieram plik za pomocą f = fopen(filename, ...)
, a następnie przekazuję f
do różnych innych funkcji, z których część może zgłosić błąd. Chciałbym zgłosić nazwę pliku w komunikacie o błędzie, ale należy unikać przekazywania dodatkowego parametru.
Mogę utworzyć niestandardową owijkę struct { FILE *f, const char *name }
, ale czy jest może prostszy sposób? (Jeśli FILE*
nie został otwarty przy użyciu fopen
, nie obchodzi mnie wynik.)
duplikat http://stackoverflow.com/questions/1188757/getting-filename-from-file-descriptor-in-c –
Nie ma standardowego sposobu, który znam; 'freopen' pozwoli ci zmienić tryb odczytu/zapisu oraz binarny/normalny, ale jeśli chcesz mieć nazwę dla siebie (powiedzmy, żeby wydrukować komunikat o błędzie) masz pecha. – dmckee
Ponieważ używasz systemu, który ma strukturę plików, wątpię, czy "pomijanie dodatkowego parametru" jest nawet problemem? Jaki jest twój powód, by tego nie przekazywać? Wydajność? – Lundin