home *** CD-ROM | disk | FTP | other *** search
-
- STAT(2) UNIX Programmer's Manual STAT(2)
-
- NNAAMMEE
- ssttaatt, llssttaatt, ffssttaatt - get file status
-
- SSYYNNOOPPSSIISS
- ##iinncclluuddee <<ssyyss//ttyyppeess..hh>>
- ##iinncclluuddee <<ssyyss//ssttaatt..hh>>
-
- _i_n_t
- ssttaatt(_c_o_n_s_t _c_h_a_r _*_p_a_t_h, _s_t_r_u_c_t _s_t_a_t _*_b_u_f)
-
- _i_n_t
- llssttaatt(_c_o_n_s_t _c_h_a_r _*_p_a_t_h, _s_t_r_u_c_t _s_t_a_t _*_b_u_f)
-
- _i_n_t
- ffssttaatt(_i_n_t _f_d, _s_t_r_u_c_t _s_t_a_t _*_b_u_f)
-
- DDEESSCCRRIIPPTTIIOONN
- The ssttaatt() function obtains information about the file pointed to by
- _p_a_t_h. Read, write or execute permission of the named file is not re
- quired, but all directories listed in the path name leading to the file
- must be seachable.
-
- LLssttaatt() is like ssttaatt() except in the case where the named file is a sym
- bolic link, in which case llssttaatt() returns information about the link,
- while ssttaatt() returns information about the file the link references.
-
- The ffssttaatt() obtains the same information about an open file known by the
- file descriptor _f_d, such as would be obtained by an open call.
-
- _B_u_f is a pointer to a ssttaatt() structure as defined by <_s_y_s_/_s_t_a_t_._h> (shown
- below) and into which information is placed concerning the file.
-
- struct stat {
- dev_t st_dev; /* device inode resides on */
- ino_t st_ino; /* inode's number */
- mode_t st_mode; /* inode protection mode */
- nlink_t st_nlink; /* number or hard links to the file */
- uid_t st_uid; /* userid of owner */
- gid_t st_gid; /* groupid of owner */
- dev_t st_rdev; /* device type, for special file inode */
- off_t st_size; /* file size, in bytes */
- time_t st_atime; /* time of last access */
- long st_spare1;
- time_t st_mtime; /* time of last data modification */
- long st_spare2;
- time_t st_ctime; /* time of last file status change */
- long st_spare3;
- long st_blksize;/* optimal file sys I/O ops blocksize */
- long st_blocks; /* blocks allocated for file */
- u_long st_flags; /* user defined flags for file */
- u_long st_gen; /* file generation number */
- };
-
- The timerelated fields of _s_t_r_u_c_t _s_t_a_t are as follows:
-
- st_atime Time when file data last accessed. Changed by the following
- system calls: mknod(2), utimes(2), and read(2).
-
- st_mtime Time when file data last modified. Changed by the following
- system calls: mknod(2), utimes(2), write(2).
-
- st_ctime Time when file status was last changed (inode data modifica
- tion). Changed by the following system calls: chmod(2)
- chown(2), link(2), mknod(2), rename(2), unlink(2),
- utimes(2), write(2).
-
- st_blocks The actual number of blocks allocated for the file in 512byte
- units.
-
- The status information word _s_t___m_o_d_e has bits:
-
- #define S_IFMT 0170000 /* type of file */
- #define S_IFIFO 0010000 /* named pipe (fifo) */
- #define S_IFCHR 0020000 /* character special */
- #define S_IFDIR 0040000 /* directory */
- #define S_IFBLK 0060000 /* block special */
- #define S_IFREG 0100000 /* regular */
- #define S_IFLNK 0120000 /* symbolic link */
- #define S_IFSOCK 0140000 /* socket */
- #define S_ISUID 0004000 /* set user id on execution */
- #define S_ISGID 0002000 /* set group id on execution */
- #define S_ISVTX 0001000 /* save swapped text even after use */
- #define S_IRUSR 0000400 /* read permission, owner */
- #define S_IWUSR 0000200 /* write permission, owner */
- #define S_IXUSR 0000100 /* execute/search permission, owner */
-
- For a list of access modes, see <_s_y_s_/_s_t_a_t_._h>, access(2) and chmod(2).
-
- RREETTUURRNN VVAALLUUEESS
- Upon successful completion a value of 0 is returned. Otherwise, a value
- of 1 is returned and _e_r_r_n_o is set to indicate the error.
-
- EERRRROORRSS
- SSttaatt() and llssttaatt() will fail if:
-
- [ENOTDIR] A component of the path prefix is not a directory.
-
- [EINVAL] The pathname contains a character with the highorder bit
- set.
-
- [ENAMETOOLONG] A component of a pathname exceeded 255 characters, or an
- entire path name exceeded 1023 characters.
-
- [ENOENT] The named file does not exist.
-
- [EACCES] Search permission is denied for a component of the path
- prefix.
-
- [ELOOP] Too many symbolic links were encountered in translating
- the pathname.
-
- [EFAULT] _B_u_f or _n_a_m_e points to an invalid address.
-
- [EIO] An I/O error occurred while reading from or writing to
- the file system.
-
- FFssttaatt() will fail if:
-
- [EBADF] _f_d is not a valid open file descriptor.
-
- [EFAULT] _B_u_f points to an invalid address.
-
- [EIO] An I/O error occurred while reading from or writing to the file
- system.
-
- CCAAVVEEAATT
- The fields in the stat structure currently marked _s_t___s_p_a_r_e_1, _s_t___s_p_a_r_e_2,
- and _s_t___s_p_a_r_e_3 are present in preparation for inode time stamps expanding
- to 64 bits. This, however, can break certain programs that depend on the
- time stamps being contiguous (in calls to utimes(2)).
-
- SSEEEE AALLSSOO
- chmod(2), chown(2), utimes(2)
-
- BBUUGGSS
- Applying fstat to a socket (and thus to a pipe) returns a zero'd buffer,
- except for the blocksize field, and a unique device and inode number.
-
- SSTTAANNDDAARRDDSS
- The ssttaatt() and ffssttaatt() function calls are expected to conform to IEEE Std
- 1003.11988 (``POSIX'').
-
- HHIISSTTOORRYY
- A llssttaatt function call appeared in 4.2BSD.
-
- 4th Berkeley Distribution March 10, 1991 3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-