Подробная информация о файле
#include <sys/stat.h>struct stat {#if _FILE_OFFSET_BITS - 0 == 64ino_t st_ino; /* File serial number. */off_t st_size; /* File size in bytes. */#elif !defined(_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS == 32#if defined(__LITTLEENDIAN__)ino_t st_ino; /* File serial number. */ino_t st_ino_hi;off_t st_size;off_t st_size_hi;#elif defined(__BIGENDIAN__)ino_t st_ino_hi;ino_t st_ino; /* File serial number. */off_t st_size_hi;off_t st_size;#else#error endian not configured for system#endif#else#error _FILE_OFFSET_BITS value is unsupported#endifdev_t st_dev; /* ID of the device containing the file. */dev_t st_rdev; /* Device ID. */uid_t st_uid; /* User ID of file. */gid_t st_gid; /* Group ID of file. */time_t st_mtime; /* Time of last data modification. */time_t st_atime; /* Time when file data was last accessed.*/time_t st_ctime; /* Time of last file status change. */mode_t st_mode; /* File types and permissions. */nlink_t st_nlink; /* Number of hard links to the file. */blksize_t st_blocksize; /* Size of a block used by st_nblocks. */int32_t st_nblocks; /* Number of blocks st_blocksize blocks. */blksize_t st_blksize; /* Preferred I/O block size for object. */#if _FILE_OFFSET_BITS - 0 == 64blkcnt_t st_blocks; /* No. of 512-byte blocks allocated for a file. */#elif !defined(_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS == 32#if defined(__LITTLEENDIAN__)blkcnt_t st_blocks; /* No. of 512-byte blocks allocated for a file. */blkcnt_t st_blocks_hi;#elif defined(__BIGENDIAN__)blkcnt_t st_blocks_hi;blkcnt_t st_blocks;#else#error endian not configured for system#endif#else#error _FILE_OFFSET_BITS value is unsupported#endif};
Структура stat используется для получения информации о состоянии файла. Поля структуры заполняются вызовами функций stat*() и lstat*(). Структура включает следующие поля:
stat
. Эти биты определены в <sys/stat.h>
и описаны ниже: Владелец | Группа | Все прочие | Разрешения |
---|---|---|---|
S_IRUSR | S_IRGRP | S_IROTH | Чтение |
S_IRWXU | S_IRWXG | S_IRWXO | Чтение, запись, исполнение/поиск. Поразрядное исключающее ИЛИ трех констант "всех прочих" (other). S_IRWXU – есть ИЛИ для IRUSR , S_IWSUR и S_IXUSR . |
S_IWUSR | S_IWGRP | S_IWOTH | Запись |
S_IXUSR | S_IXGRP | S_IXOTH | Исполнение/поиск |
Бит | Эквивалент |
---|---|
S_IEXEC | S_IXUSR |
S_IREAD | S_IRUSR |
S_IWRITE | S_IWUSR |
stat
. Макросы возвращают ненулевое значение, если проверка выполнена успешно, и ноль, если проверка выполнена неуспешно. Указанные далее макросы проверяют, является ли файл: stat
. Макрос возвращает ненулевое значение, если указанный объект реализован как отдельный тип файла, и указанный тип файла содержится в указанной структуре stat
по указателю buf. В противном случае макрос возвращает ноль. stat
- это идентификатор устройства, который состоит из: 0
до 63
. 0
до 1023
. POSIX 1003.1; Поддержка больших файлов
iofunc_stat(), fstat(), fstat64(), lstat(), lstat64(), stat(), stat64()
Предыдущий раздел: Описание API системной библиотеки