Annotation of 43BSDTahoe/man/man2/stat.2, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1980 Regents of the University of California.
        !             2: .\" All rights reserved.  The Berkeley software License Agreement
        !             3: .\" specifies the terms and conditions for redistribution.
        !             4: .\"
        !             5: .\"    @(#)stat.2      6.7 (Berkeley) 10/25/87
        !             6: .\"
        !             7: .TH STAT 2 "October 25, 1987"
        !             8: .UC 4
        !             9: .SH NAME
        !            10: stat, lstat, fstat \- get file status
        !            11: .SH SYNOPSIS
        !            12: .nf
        !            13: .ft B
        !            14: #include <sys/types.h>
        !            15: #include <sys/stat.h>
        !            16: .PP
        !            17: .ft B
        !            18: stat(path, buf)
        !            19: char *path;
        !            20: struct stat *buf;
        !            21: .PP
        !            22: .ft B
        !            23: lstat(path, buf)
        !            24: char *path;
        !            25: struct stat *buf;
        !            26: .PP
        !            27: .ft B
        !            28: fstat(fd, buf)
        !            29: int fd;
        !            30: struct stat *buf;
        !            31: .fi
        !            32: .ft R
        !            33: .SH DESCRIPTION
        !            34: .I Stat
        !            35: obtains information about the file
        !            36: .IR path .
        !            37: Read, write or execute
        !            38: permission of the named file is not required, but all directories
        !            39: listed in the path name leading to the file must be reachable.
        !            40: .PP
        !            41: .I Lstat
        !            42: is like \fIstat\fP except in the case where the named file is a symbolic link,
        !            43: in which case
        !            44: .I lstat
        !            45: returns information about the link,
        !            46: while
        !            47: .I stat
        !            48: returns information about the file the link references.
        !            49: .PP
        !            50: .I Fstat
        !            51: obtains the same information about an open file
        !            52: referenced by the argument descriptor, such as would
        !            53: be obtained by an \fIopen\fP call.
        !            54: .PP
        !            55: .I Buf
        !            56: is a pointer to a
        !            57: .I stat
        !            58: structure into which information is placed concerning the file.
        !            59: The contents of the structure pointed to by
        !            60: .I buf
        !            61: .PP
        !            62: .nf
        !            63: .ta 1i 1.7i 2.5i
        !            64:      struct stat {
        !            65:        dev_t   st_dev; /* device inode resides on */
        !            66:        ino_t   st_ino; /* this inode's number */
        !            67:        u_short st_mode;        /* protection */
        !            68:        short   st_nlink;       /* number or hard links to the file */
        !            69:        uid_t   st_uid; /* user-id of owner */
        !            70:        gid_t   st_gid; /* group-id of owner */
        !            71:        dev_t   st_rdev;        /* the device type, for inode that is device */
        !            72:        off_t   st_size;        /* total size of file */
        !            73:        time_t  st_atime;       /* file last access time */
        !            74:        int     st_spare1;
        !            75:        time_t  st_mtime;       /* file last modify time */
        !            76:        int     st_spare2;
        !            77:        time_t  st_ctime;       /* file last status change time */
        !            78:        int     st_spare3;
        !            79:        long    st_blksize;     /* optimal blocksize for file system i/o ops */
        !            80:        long    st_blocks;      /* actual number of blocks allocated */
        !            81:        long    st_spare4[2];
        !            82:     };
        !            83: .fi
        !            84: .DT
        !            85: .PP
        !            86: .TP 12
        !            87: st_atime
        !            88: Time when file data was last accessed.  Changed by the following system
        !            89: calls:
        !            90: .IR mknod (2),
        !            91: .IR utimes (2),
        !            92: and
        !            93: .IR read (2).
        !            94: For reasons of efficiency, 
        !            95: st_atime is not set when a directory
        !            96: is searched, although this would be more logical.
        !            97: .TP 12
        !            98: st_mtime
        !            99: Time when data was last modified.
        !           100: It is not set by changes of owner, group, link count, or mode.
        !           101: Changed by the following system calls:
        !           102: .IR mknod (2),
        !           103: .IR utimes (2),
        !           104: .IR write (2).
        !           105: .TP 12
        !           106: st_ctime
        !           107: Time when file status was last changed.
        !           108: It is set both both by writing and changing the i-node.
        !           109: Changed by the following system calls:
        !           110: .IR chmod (2)
        !           111: .IR chown (2),
        !           112: .IR link (2),
        !           113: .IR mknod (2),
        !           114: .IR rename (2),
        !           115: .IR unlink (2),
        !           116: .IR utimes (2),
        !           117: .IR write (2).
        !           118: .PP
        !           119: The status information word \fIst_mode\fP has bits:
        !           120: .nf
        !           121: .in +5n
        !           122: .ta 1.6i 2.5i 3i
        !           123: #define S_IFMT 0170000 /* type of file */
        !           124: #define\ \ \ \ S_IFDIR 0040000 /* directory */
        !           125: #define\ \ \ \ S_IFCHR 0020000 /* character special */
        !           126: #define\ \ \ \ S_IFBLK 0060000 /* block special */
        !           127: #define\ \ \ \ S_IFREG 0100000 /* regular */
        !           128: #define\ \ \ \ S_IFLNK 0120000 /* symbolic link */
        !           129: #define\ \ \ \ S_IFSOCK        0140000 /* socket */
        !           130: #define S_ISUID        0004000 /* set user id on execution */
        !           131: #define S_ISGID        0002000 /* set group id on execution */
        !           132: #define S_ISVTX        0001000 /* save swapped text even after use */
        !           133: #define S_IREAD        0000400 /* read permission, owner */
        !           134: #define S_IWRITE       0000200 /* write permission, owner */
        !           135: #define S_IEXEC        0000100 /* execute/search permission, owner */
        !           136: .fi
        !           137: .in -5n
        !           138: .PP
        !           139: The mode bits 0000070 and 0000007 encode group and
        !           140: others permissions (see
        !           141: .IR chmod (2)).
        !           142: .SH "RETURN VALUE
        !           143: Upon successful completion a value of 0 is returned.
        !           144: Otherwise, a value of \-1 is returned and
        !           145: .I errno
        !           146: is set to indicate the error.
        !           147: .SH "ERRORS
        !           148: .I Stat
        !           149: and
        !           150: .I lstat
        !           151: will fail if one or more of the following are true:
        !           152: .TP 15
        !           153: [ENOTDIR]
        !           154: A component of the path prefix is not a directory.
        !           155: .TP 15
        !           156: [EINVAL]
        !           157: The pathname contains a character with the high-order bit set.
        !           158: .TP 15
        !           159: [ENAMETOOLONG]
        !           160: A component of a pathname exceeded 255 characters,
        !           161: or an entire path name exceeded 1023 characters.
        !           162: .TP 15
        !           163: [ENOENT]
        !           164: The named file does not exist.
        !           165: .TP 15
        !           166: [EACCES]
        !           167: Search permission is denied for a component of the path prefix.
        !           168: .TP 15
        !           169: [ELOOP]
        !           170: Too many symbolic links were encountered in translating the pathname.
        !           171: .TP 15
        !           172: [EFAULT]
        !           173: .I Buf
        !           174: or
        !           175: .I name
        !           176: points to an invalid address.
        !           177: .TP 15
        !           178: [EIO]
        !           179: An I/O error occurred while reading from or writing to the file system.
        !           180: .PP
        !           181: .I Fstat
        !           182: will fail if one or both of the following are true:
        !           183: .TP 15
        !           184: [EBADF]
        !           185: .I Fildes
        !           186: is not a valid open file descriptor.
        !           187: .TP 15
        !           188: [EFAULT]
        !           189: .I Buf
        !           190: points to an invalid address.
        !           191: .TP 15
        !           192: [EIO]
        !           193: An I/O error occurred while reading from or writing to the file system.
        !           194: .SH CAVEAT
        !           195: The fields in the stat structure currently marked 
        !           196: .IR st_spare1 ,
        !           197: .IR st_spare2 ,
        !           198: and
        !           199: .I st_spare3
        !           200: are present in preparation for inode time stamps expanding
        !           201: to 64 bits.  This, however, can break certain programs that
        !           202: depend on the time stamps being contiguous (in calls to
        !           203: .IR utimes (2)).
        !           204: .SH "SEE ALSO"
        !           205: chmod(2), chown(2), utimes(2)
        !           206: .SH BUGS
        !           207: Applying
        !           208: .I fstat
        !           209: to a socket (and thus to a pipe)
        !           210: returns a zero'd buffer,
        !           211: except for the blocksize field,
        !           212: and a unique device and inode number.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.