The stat system call

Use stat to get information about a file. Include

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

int stat(const char *pathname, struct stat *buf)

Stat stores information about the file described by pathname into buf. It returns 0 on success and −1 on error.

Here is the definition of struct stat from the Man page for our version of Linux.

     struct stat {
         dev_t     st_dev;         /* ID of device containing file */
         ino_t     st_ino;         /* inode number */
         mode_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 ID (if special file) */
         off_t     st_size;        /* total size, in bytes */
         blksize_t st_blksize;     /* blocksize for filesystem I/O */
         blkcnt_t  st_blocks;      /* number of 512B blocks allocated */

          /* Since Linux 2.6, the kernel supports nanosecond
            precision for the following timestamp fields.
            For the details before Linux 2.6, see NOTES. */

         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
     };

Example.

  char* path = "mfile";
  struct stat st;

  if(stat(path, &st) == 0) {
    int modificationTime = st.st_mtime;
    ...
  }
  else {
    /* file path does not exist or cannot be accessed. */
  }