|
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 (see
feature_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_SOURCE
Describes information about a file.
The fields are as follows:
st_dev This field describes the device on which this file resides.
(The major(3) and minor(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. See inode(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 than
st_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, see inode(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, and st_ctime—typed as time_t that recorded timestamps
with one-second precision.
Since Linux 2.5.48, the stat structure supports nanosecond
resolution for the three file timestamp fields. The nanosecond
components of each timestamp are available via names of the form
st_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_SOURCE is defined with the value 200809L or greater, or
_XOPEN_SOURCE is 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_SOURCE or _SVID_SOURCE is
defined. If none of the aforementioned macros are defined, then
the nanosecond values are exposed with names of the form
st_atimensec.
The following header also provides this type: <ftw.h>.
stat(2), inode(7)
This page is part of the man-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 is not
part of the original manual page), send a mail to
man-pages@man7.org
Linux man-pages 6.15 2025-05-17 stat(3type)
Pages that refer to this page: stat(2), blkcnt_t(3type), blksize_t(3type), dev_t(3type), mode_t(3type)