NAME |LIBRARY |SYNOPSIS |DESCRIPTION |STANDARDS |HISTORY |NOTES |SEE ALSO |COLOPHON | |
stat(3type)stat(3type)stat - file status
Standard C library (libc)
#include <sys/stat.h>struct stat {dev_t st_dev;/* ID of device containing file */ino_t st_ino;/* Inode number */mode_t st_mode;/* File type and mode */nlink_t st_nlink;/* Number of hard links */uid_t st_uid;/* User ID of owner */gid_t st_gid;/* Group ID of owner */dev_t st_rdev;/* Device ID (if special file) */off_t st_size;/* Total size, in bytes */blksize_t st_blksize;/* Block size for filesystem I/O */blkcnt_t st_blocks;/* Number of 512 B blocks allocated */ /* Since POSIX.1-2008, this structure supports nanosecond precision for the following timestamp fields. For the details before POSIX.1-2008, see VERSIONS. */struct timespec st_atim;/* Time of last access */struct timespec st_mtim;/* Time of last modification */struct timespec st_ctim;/* Time of last status change */#define st_atime st_atim.tv_sec/* Backward compatibility */#define st_mtime st_mtim.tv_sec#define st_ctime st_ctim.tv_sec}; Feature Test Macro Requirements for glibc (seefeature_test_macros(7)):st_atim,st_mtim,st_ctim: Since glibc 2.12: _POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700 glibc 2.19 and earlier: _BSD_SOURCE || _SVID_SOURCEDescribes information about a file. The fields are as follows:st_dev This field describes the device on which this file resides. (Themajor(3) andminor(3) macros may be useful to decompose the device ID in this field.)st_ino This field contains the file's inode number.st_mode This field contains the file type and mode. Seeinode(7) for further information.st_nlink This field contains the number of hard links to the file.st_uid This field contains the user ID of the owner of the file.st_gid This field contains the ID of the group owner of the file.st_rdev This field describes the device that this file (inode) represents.st_size This field gives the size of the file (if it is a regular file or a symbolic link) in bytes. The size of a symbolic link is the length of the pathname it contains, without a terminating null byte.st_blksize This field gives the "preferred" block size for efficient filesystem I/O.st_blocks This field indicates the number of blocks allocated to the file, in 512-byte units. (This may be smaller thanst_size/512 when the file has holes.)st_atime This is the time of the last access of file data.st_mtime This is the time of last modification of file data.st_ctime This is the file's last status change timestamp (time of last change to the inode). For further information on the above fields, seeinode(7).
POSIX.1-2008.
POSIX.1-2001. Old kernels and old standards did not support nanosecond timestamp fields. Instead, there were three timestamp fields—st_atime,st_mtime, andst_ctime—typed astime_t that recorded timestamps with one-second precision. Since Linux 2.5.48, thestat structure supports nanosecond resolution for the three file timestamp fields. The nanosecond components of each timestamp are available via names of the formst_atim.tv_nsec, if suitable test macros are defined. Nanosecond timestamps were standardized in POSIX.1-2008, and, starting with glibc 2.12, glibc exposes the nanosecond component names if_POSIX_C_SOURCEis defined with the value 200809L or greater, or_XOPEN_SOURCEis defined with the value 700 or greater. Up to and including glibc 2.19, the definitions of the nanoseconds components are also defined if_BSD_SOURCEor_SVID_SOURCEis defined. If none of the aforementioned macros are defined, then the nanosecond values are exposed with names of the formst_atimensec.
The following header also provides this type:<ftw.h>.
stat(2),inode(7)
This page is part of theman-pages (Linux kernel and C library user-space interface documentation) project. Information about the project can be found at ⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report for this manual page, see ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩. This page was obtained from the tarball man-pages-6.15.tar.gz fetched from ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on 2025-08-11. If you discover any rendering problems in this HTML version of the page, or you believe there is a better or more up- to-date source for the page, or you have corrections or improvements to the information in this COLOPHON (which isnot part of the original manual page), send a mail to man-pages@man7.orgLinux man-pages 6.15 2025-05-17stat(3type)Pages that refer to this page:stat(2), blkcnt_t(3type), blksize_t(3type), dev_t(3type), mode_t(3type)
HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface. For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere. Hosting byjambit GmbH. | ![]() |