stat(2) (XENIX Compatibility Package) stat(2)
NAME
stat, lstat, fstat - get file status
SYNOPSIS
#include <sys/types.h>
#include <sys/stat.h>
int stat (const char *path, struct stat *buf);
int lstat (const char *path, struct stat *buf);
int fstat (int fildes, struct stat *buf);
DESCRIPTION
path points to a path name naming a file. Read, write, or execute
permission of the named file is not required, but all directories
listed in the path name leading to the file must be searchable. stat
obtains information about the named file.
Note that in a Remote File Sharing environment, the information
returned by stat depends on the user/group mapping set up between the
local and remote computers. [See idload(1M).]
lstat obtains file attributes similar to stat, except when the named
file is a symbolic link; in that case lstat returns information about
the link, while stat returns information about the file the link
references.
fstat obtains information about an open file known by the file
descriptor fildes, obtained from a successful open, creat, dup,
fcntl, or pipe system call.
buf is a pointer to a stat structure into which information is placed
concerning the file.
The contents of the structure pointed to by buf include the following
members:
modet stmode; /* File mode [see mknod(2)] */
inot stino; /* Inode number */
devt stdev; /* ID of device containing */
/* a directory entry for this file */
devt strdev; /* ID of device */
/* This entry is defined only for */
/* character special files */,
/* XENIX special named files or block
/* special files */
nlinkt stnlink; /* Number of links */
uidt stuid; /* User ID of the file's owner */
gidt stgid; /* Group ID of the file's group */
offt stsize; /* File size in bytes */
7/91 Page 1
stat(2) (XENIX Compatibility Package) stat(2)
timet statime; /* Time of last access */
timet stmtime; /* Time of last data modification */
timet stctime; /* Time of last file status change */
/* Times measured in seconds since */
/* 00:00:00 GMT, Jan. 1, 1970 */
Page 2 7/91
stat(2) (XENIX Compatibility Package) stat(2)
stmode The mode of the file as described in mknod(2).
stino This field uniquely identifies the file in a given file
system. The pair stino and stdev uniquely identifies
regular files.
stdev This field uniquely identifies the file system that
contains the file. Its value may be used as input to the
ustat system call to determine more information about this
file system. No other meaning is associated with this
value.
strdev This field should be used only by administrative commands.
It is valid only for block special files or character
special files or XENIX special named files. The st_rdev
field for block special and character special files only
has meaning on the system where the file was configured.
If the file is a XENIX special named file, it contains the
type code [see stat(4) for the XENIX semaphore and shared
data type code values SINSEM and SINSHD].
stnlink This field should be used only by administrative commands.
stuid The user ID of the file's owner.
stgid The group ID of the file's group.
stsize For regular files, this is the address of the end of the
file. For pipes or FIFOs, this is the count of the data
currently in the file. For block special character
special, or XENIX special named files. this is not
defined.
statime Time when file data was last accessed. Changed by the
following system calls: creat, mknod, pipe, utime, read,
creatsem, opensem, sigsem, waitsem, sdget and sdfree.
stmtime Time when data was last modified. Changed by the following
system calls: creat, mknod, pipe, utime, write.
stctime Time when file status was last changed. Changed by the
following system calls: chmod, chown, creat, link, mknod,
pipe, unlink, utime, write, creatsem, sdget and sdfree.
stat and lstat fail if one or more of the following are true:
EACCES Search permission is denied for a component of
the path prefix.
7/91 Page 3
stat(2) (XENIX Compatibility Package) stat(2)
EBADF fildes is not a valid open file descriptor.
EFAULT buf or path points to an invalid address.
EINTR A signal was caught during the stat system call.
ELOOP Too many symbolic links were encountered in
translating path.
EMULTIHOP Components of path require hopping to multiple
remote machines.
ENAMETOOLONG The length of the path argument exceeds
{PATHMAX}, or the length of a path component
exceeds {NAMEMAX} while (_POSIXNOTRUNC) is in
effect.
ENOENT The named file does not exist or is the null
pathname.
ENOTDIR A component of the path prefix is not a
directory.
ENOLINK path points to a remote machine and the link to
that machine is no longer active.
EOVERFLOW A component is too large to store in the
structure pointed to by buf.
fstat fails if one or more of the following are true:
ENOLINK fildes points to a remote machine and the link to
that machine is no longer active.
EOVERFLOW A component is too large to store in the
structure pointed to by buf.
SEE ALSO
chmod(2), chown(2), creat(2), link(2), mknod(2), pipe(2), read(2),
time(2), unlink(2), utime(2), write(2), stat(5).
DIAGNOSTICS
Upon successful completion a value of 0 is returned. Otherwise, a
value of -1 is returned and errno is set to indicate the error.
Page 4 7/91