olka Opublikowano 12 Czerwca 2005 Zgłoś Opublikowano 12 Czerwca 2005 Witam, czy ktoś orientuje się jak odczytać rozmiar pliku z poziomu c w systemie LINUX ? Przejrzałam już masę kursów (głównie anglojęzycznych) i jedyne co znalazłam, to filesize(), ale podobno działa tylko pod windowsem/dosem (pod linuxem w każdym razie nie, bo sprawdzałam) Wiem, że istnieje możliwość otwarcia pliku z ustawienie wskażnika na jego końcu i odczytanie położenia tego wskaźnika, ale dla mnie jest to rozwięzanie: 1. Mało eleganckie 2. Niewygodne z uwagi na fakt, iż z tego pliku odczytywać będę dane, co wymusi konieczność ponownego pozycjonowania wskaźnika na początek pliku z góry dziękuję za wszelkie sugestie Olka PS zastanawiałam sie nad użyciem funkcji systemowej która sprawdziłaby rozmiar, ale nie wiem jak (i czy w ogole sie da...) przekazać to do zmiennej w c++ Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
civi Opublikowano 12 Czerwca 2005 Zgłoś Opublikowano 12 Czerwca 2005 Głowy nie dam, ale chyba funkcja stat zwraca rozmiar pliku. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
K3310pH Opublikowano 12 Czerwca 2005 Zgłoś Opublikowano 12 Czerwca 2005 Atrybuty pliku zapisane w i-węźle można pobrać jedną z trzech funkcji systemowych: int stat(const char *file_name, struct stat *buf); int lstat(const char *file_name, struct stat *buf); int fstat(int filedes, struct stat *buf); gdzie: file_name - nazwa ścieżkowa pliku, filedes - deskryptor pliku, buf - wskaźnik do struktury stat, w której zostaną zapisane atrybuty pliku. Funkcje odczytują zawartość i-węzła wskazanego pliku i zapisują w buforze. Plik może być wskazany przez nazwę w funkcjach stat() i lstat() lub przez numer deskryptora otwartego pliku w funkcji fstat(). Proces nie musi posiadać żadnych uprawnień do pliku, ale musi posiadać prawo przeglądania wszystkich katalogów podanych w nazwie ścieżkowej pliku. Funkcja lstat() pozwala odczytać atrybuty dowiązań symbolicznych, podczas gdy stat() podąża za dowiązaniem i operuje na pliku wskazywanym. Funkcje zapisują informacje o pliku w strukturze stat zdefiniowanej następująco: struct stat { dev_t st_dev; - nazwa urządzenia, na którym plik jest zapisany ino_t st_ino; - numer i-węzła mode_t st_mode; - tryb pliku nlink_t st_nlink; - liczba dowiązań uid_t st_uid; - identyfikator właściciela UID gid_t st_gid; - identyfikator grupy GID dev_t st_rdev; - typ urządzenia dla plików specjalnych off_t st_size; - rozmiar pliku w bajtach unsigned long st_blksize; - zalecany rozmiar bloku dla operacji wejścia/wyjścia unsigned long st_blocks; - liczba zajmowanych bloków dyskowych time_t st_atime; - czas ostatniego dostępu do pliku time_t st_mtime; - czas ostatniej modyfikacji zawartości time_t st_ctime; - czas ostatniej zmiany atrybutów } Wartości atrybutów pliku ulegają zmianie w wyniku działania różnych funkcji systemowych, np. dopisanie danych do pliku powoduje zmianę rozmiaru i daty modyfikacji. Niektóre atrybuty można zmieniać wprost posługując się specjalnymi funkcjami systemowymi. Dotyczy to w szczególności identyfikatorów użytkowników i praw dostępu do pliku. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ParanoiK Opublikowano 12 Czerwca 2005 Zgłoś Opublikowano 12 Czerwca 2005 Da. http://cermics.enpc.fr/~ts/C/FUNCTIONS/stat.html Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
olka Opublikowano 12 Czerwca 2005 Zgłoś Opublikowano 12 Czerwca 2005 Bardzo dziękuję wszystkim za pomoc i szybki odzew! Właśnie takiej funkcji poszukiwałam :smile2: pozdrawiam wszystkich Olka Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...