stat

###

###

###

###

###

###

###

###

###

###

###

    STAT(2)             Linux Programmer's Manual             STAT(2)

    NAME
           stat, fstat, lstat - get file status

    SYNOPSIS
           #include <sys/stat.h>
           #include <unistd.h>

           int stat(const char *file_name, struct stat *buf);
           int fstat(int filedes, struct stat *buf);
           int lstat(const char *file_name, struct stat *buf);

    DESCRIPTION
           These  functions  return  information  about the specified
           file.  You do not need any access rights to  the  file  to
           get  this  information  but  you need search rights to all
           directories named in the path leading to the file.

           stat stats the file pointed to by file_name and  fills  in
           buf.

           lstat  is  identical  to  stat,  only  the  link itself is
           stated, not the file  that  is  obtained  by  tracing  the
           links.

           fstat  is identical to stat, only the open file pointed to
           by filedes (as returned by fopen(3) ) is stated  in  place
           of file_name.

           They  all  return  a  stat structure, which is declared as
           follows:

                  struct stat
                  {
                      dev_t         st_dev;      /* device */
                      ino_t         st_ino;      /* inode */
                      umode_t       st_mode;     /* protection */
                      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 type (if inode device) */
                      off_t         st_size;     /* total size, in bytes */
                      unsigned long st_blksize;  /* blocksize for filesystem I/O */
                      unsigned long st_blocks;   /* number of blocks allocated */
                      time_t        st_atime;    /* time of last access */
                      time_t        st_mtime;    /* time of last modification */
                      time_t        st_ctime;    /* time of last change */
                  };

           Note that st_blocks may not always be in terms  of  blocks
           of  size  st_blksize, and that st_blksize may instead pro-
           vide a notion of the "preferred" blocksize  for  efficient
           file system I/O.

    Linux 1.1.75              1 January 1995                        1

    STAT(2)             Linux Programmer's Manual             STAT(2)

           Not all of the Linux filesystems implement all of the time
           fields.  Traditionally, st_atime is changed  by  mknod(2),
           utime(2), read(2), write(2), and truncate(2).

           Traditionally,  st_mtime is changed by mknod(2), utime(2),
           and write(2).  The st_mtime is not changed for changes  in
           owner, group, hard link count, or mode.

           Traditionally,  st_ctime  is changed by writing or by set-
           ting inode information (i.e., owner,  group,  link  count,
           mode, etc.).

           The following macros are defined to check the file type:

                  S_ISLNK(m)  is it a symbolic link

                  S_ISREG(m)  regular file

                  S_ISDIR(m)  directory

                  S_ISCHR(m)  character device

                  S_ISBLK(m)  block device

                  S_ISFIFO(m) fifo

                  S_ISSOCK(m) socket

           The following flags are defined for the st_mode field:

                  S_IFMT   00170000  bitmask  for  the file type bit-
                           fields

                  S_IFSOCK 0140000 socket

                  S_IFLNK  0120000 symbolic link

                  S_IFREG  0100000 regular file

                  S_IFBLK  0060000 block device

                  S_IFDIR  0040000 directory

                  S_IFCHR  0020000 character device

                  S_IFIFO  0010000 fifo

                  S_ISUID  0004000 set UID bit

                  S_ISGID  0002000 set GID bit

                  S_ISVTX  0001000 sticky bit

                  S_IRWXU  00700 user (file owner)  has  read,  write

    Linux 1.1.75              1 January 1995                        2

    STAT(2)             Linux Programmer's Manual             STAT(2)

                           and execute permission

                  S_IRUSR (S_IREAD)
                           00400 user has read permission

                  S_IWUSR (S_IWRITE)
                           00200 user has write permission

                  S_IXUSR (S_IEXEC)
                           00100 user has execute permission

                  S_IRWXG  00070  group  has  read, write and execute
                           permission

                  S_IRGRP  00040 group has read permission

                  S_IWGRP  00020 group has write permission

                  S_IXGRP  00010 group has execute permission

                  S_IRWXO  00007 others have read, write and  execute
                           permission

                  S_IROTH  00004 others have read permission

                  S_IWOTH  00002 others have write permisson

                  S_IXOTH  00001 others have execute permission

    RETURN VALUE
           On  success,  zero is returned.  On error, -1 is returned,
           and errno is set appropriately.

    ERRORS
           EBADF   filedes is bad.

           ENOENT  File does not exist.

    CONFORMING TO
           SVID  (not  lstat()),  AT&T  (not  lstat()),  POSIX   (not
           lstat()), X/OPEN (not lstat()), BSD 4.3

### SEE ALSO

chmod, chown, readlink, utime,

###

    Linux 1.1.75              1 January 1995                        3

Top | Master Index | Keywords | Functions

This manual page was brought to you by mjl_man V-2.0