Index of Section 2 Manual Pages

Interix / SUAstat.2Interix / SUA

stat(2)                                                         stat(2)

  stat()

  NAME

    stat(), wcs_stat(), lstat(), wcs_lstat(), fstat() - get file status

  SYNOPSIS

    #include 
    #include 

    int stat (const char *path, struct stat *sb)
    int wcs_stat (const wchar_t *path, struct stat *sb)
    int lstat (const char *path, struct stat *sb)
    int wcs_lstat (const wchar_t *path, struct stat *sb)
    int fstat (int fd, struct stat *sb)

  DESCRIPTION

    The stat(2) and wcs_stat(2) functions are identical, as are the lstat(2)
    and wcs_lstat(2) functions, except that the wcs_stat(2) and wcs_lstat(2)
    functions accept wide characters in the path argument.

    The stat(2) and wcs_stat(2) functions obtain information about the file
    pointed to by path. Read, write or execute permission of the named file is
    not required, but all directories listed in the pathname leading to the
    file must be searchable. If path is a symbolic link, stat(2) or
    wcs_stat(2) returns information about the file the link references.

    The lstat(2) and wcs_lstat(2) functions are like stat(2), unless the file
    named by path is a symbolic link. In this case, lstat(2) returns
    information about the link file itself. The function stores the length of
    the pathname in the link file in the st_size member (without the trailing
    null). The file type information macros defined in  will work
    with a symbolic link.

    The fstat(2) function obtains the same information about an open file
    identified by the file descriptor fd.

    The sb argument is a pointer to a stat structure as defined by  (shown below) and into which information is placed concerning the
    file.
    Type        Field               Description

    mode_t      st_mode             protection mode

    ino_t       st_ino              file serial number

    dev_t       st_dev              device file resides on

    dev_t       st_rdev             type of device file resides on

    nlink_t     st_nlink            number of hard links to the file

    uid_t       st_uid              user-ID of owner

    gid_t       st_gid              group-ID of owner

    off_t       st_size             file size, in bytes

    time_t      st_atime            time of last access

    time_t      st_mtime            time of last data modification

    time_t      st_ctime            time of last file status change

    long        st_blksize          optimal file system I/O ops blocksize

    long        st_blocks           number of blocks allocated for the file

    int         st_attrs            MS-DOS file attributes

    int         st_info             Interix-specific flags

    long        st_reserved[18]     reserved for future use

    The time-related fields of struct stat are as follows:

    st_atime
        Time when file data last accessed. Changed by the utime(2) and read(2)
        calls.

    st_mtime
        Time when file data last modified. Changed by the utime(2) and
        write(2) calls.

    st_ctime
        Time when file status was last changed (file serial data
        modification). Changed by the chmod(2), chown(2), link(2), rename(2),
        unlink(2), utime(2) and write(2) calls.

    The size-related fields of the struct stat are:

    st_blksize
        The optimal I/O block size for the file.

    The status information word st_mode has the following bits:
    Symbol       Meaning

    S_IFMT       Type of file

    S_IFIFO      named pipe (fifo)

    S_IFCHR      character special

    S_IFDIR      directory

    S_IFBLK      block special

    S_IFREG      regular

    S_IFLNK      symbolic link

    S_IFSOCK     file is socket

    S_ISUID      set user ID on execution

    S_ISGID      set group ID on execution

    S_IRWXU      read, write, execute/search by owner

    S_IRUSR      read permission, owner

    S_IWUSR      write permission, owner

    S_IXUSR      execute/search permission, owner

    S_IRWXG      read, write, execute/search by group

    S_IRGRP      read permission, group

    S_IWGRP      write permission, group

    S_IXGRP      execute/search permission, group

    S_IRWXO      read, write, execute/search by others

    S_IROTH      read permission, file other

    S_IWOTH      write permission, file other

    S_IXOTH      execute/search permission, file other

    For a list of access modes, see , access(2) and chmod(2).

    For a FIFO file, the st_size field contains its PIPE_BUF value.

    The st_attrs field can have the following bits set:
    *     S_READONLY
    *     S_HIDDEN
    *     S_SYSTEM
    *     S_DIRECTORY
    *     S_ARCHIVE
    *     S_TEMPORARY
    *     S_COMPRESSED
    *     S_OFFLINE

    The st_info field has only one flag: When st_info is set to
    S_INO_RELIABLE, st_ino can be trusted.

  Determining File Type

    To determine the type of a file, several macros are defined in ; these all take the value of the st_mode from the stat structure
    as their argument:
    S_ISDIR(m)      True if directory file, false otherwise

    S_ISCHR(m)      True if character special file, false otherwise

    S_ISBLK(m)      True if block special file, false otherwise

    S_ISREG(m)      True if regular file, false otherwise

    S_ISFIFO(m)     True if pipe or FIFO special file, false otherwise

    S_ISSOCK(m)     True if a socket, false otherwise

  RETURN VALUES

    Upon successful completion, stat(2), wcs_stat(2), and fstat(2) return 0.
    Otherwise they return -1 and set errno to indicate the error.

  ERRORS

    The stat(2), wcs_stat(2), lstat(2), and wcs_lstat(2) calls will fail if:

    [EACCES]
        Search permission is denied for a component of the path prefix.

    [EFAULT]
        Sb or name points to an invalid address.

    [EIO]
        An I/O error occurred while reading from or writing to the file
        system.

    [ELOOP]
        Too many symbolic links were encountered in translating the pathname.

    [EINVAL]
        The pathname contains a character with the high-order bit set, or the
        process attempted to stat(2) a file on a device that does not support
        the call.

    [ENAMETOOLONG]
        A component of a pathname exceeded characters, or an entire pathname
        exceeded characters.

    [ENOENT]
        The named file does not exist.

    [ENOMEM]
        Insufficient memory to allocate the stat structure.

    [ENOTDIR]
        A component of the path prefix is not a directory.

    The fstat(2) call will fail if:

    [EBADF]
        fd is not a valid open file descriptor.

    [EIO]
        An I/O error occurred while reading from or writing to the file
        system.

  NOTE

    If the Win32 Read-Only attribute is set on a file, stat(2) reports that
    the file is unwriteable, no matter what the permissions are. To turn off
    the Win32 Read-Only attribute, you can use chmod(2) to enable a write
    permission; chmod(2) will unset the Read-Only attribute.

  SEE ALSO

    chmod(2)

    chown(2)

    group_from_gid(3)

    user_from_uid(3)

    utime(2)

  USAGE NOTES

    All of these functions are thread safe.

    All of these functions are async-signal safe.


Interix / SUAHosted at SUA Community for Interix, SUA and SFUInterix / SUA