stat(3type) — Linux manual page


stat(3type)                                                  stat(3type)

NAME         top

       stat - file status

LIBRARY         top

       Standard C library (libc)

SYNOPSIS         top

       #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_mtine  st_mtim.tv_sec
       #define st_ctime  st_ctim.tv_sec

   Feature Test Macro Requirements for glibc (see

       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

DESCRIPTION         top

       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.

              This field contains the file type and mode.  See inode(7)
              for further information.

              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.

              This field describes the device that this file (inode)

              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.

              This field gives the "preferred" block size for efficient
              filesystem I/O.

              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.)

              This is the time of the last access of file data.

              This is the time of last modification of file data.

              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).

STANDARDS         top


HISTORY         top


       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

NOTES         top

       The following header also provides this type: <ftw.h>.

SEE ALSO         top

       stat(2), inode(7)

Linux man-pages 6.04           2023-03-30                    stat(3type)

Pages that refer to this page: stat(2)blkcnt_t(3type)blksize_t(3type)dev_t(3type)mode_t(3type)