Next: Testing File Type, Previous: Attribute Meanings, Up: File Attributes
To examine the attributes of files, use the functions stat,
fstat and lstat. They return the attribute information in
a struct stat object. All three functions are declared in the
header file sys/stat.h.
The
statfunction returns information about the attributes of the file named by filename in the structure pointed to by buf.If filename is the name of a symbolic link, the attributes you get describe the file that the link points to. If the link points to a nonexistent file name, then
statfails reporting a nonexistent file.The return value is
0if the operation is successful, or-1on failure. In addition to the usual file name errors (see File Name Errors, the followingerrnoerror conditions are defined for this function:
ENOENT- The file named by filename doesn't exist.
When the sources are compiled with
_FILE_OFFSET_BITS == 64this function is in factstat64since the LFS interface transparently replaces the normal implementation.
This function is similar to
statbut it is also able to work on files larger then 2^31 bytes on 32-bit systems. To be able to do this the result is stored in a variable of typestruct stat64to which buf must point.When the sources are compiled with
_FILE_OFFSET_BITS == 64this function is available under the namestatand so transparently replaces the interface for small files on 32-bit machines.
The
fstatfunction is likestat, except that it takes an open file descriptor as an argument instead of a file name. See Low-Level I/O.Like
stat,fstatreturns0on success and-1on failure. The followingerrnoerror conditions are defined forfstat:
EBADF- The filedes argument is not a valid file descriptor.
When the sources are compiled with
_FILE_OFFSET_BITS == 64this function is in factfstat64since the LFS interface transparently replaces the normal implementation.
This function is similar to
fstatbut is able to work on large files on 32-bit platforms. For large files the file descriptor filedes should be obtained byopen64orcreat64. The buf pointer points to a variable of typestruct stat64which is able to represent the larger values.When the sources are compiled with
_FILE_OFFSET_BITS == 64this function is available under the namefstatand so transparently replaces the interface for small files on 32-bit machines.
The
lstatfunction is likestat, except that it does not follow symbolic links. If filename is the name of a symbolic link,lstatreturns information about the link itself; otherwiselstatworks likestat. See Symbolic Links.When the sources are compiled with
_FILE_OFFSET_BITS == 64this function is in factlstat64since the LFS interface transparently replaces the normal implementation.
This function is similar to
lstatbut it is also able to work on files larger then 2^31 bytes on 32-bit systems. To be able to do this the result is stored in a variable of typestruct stat64to which buf must point.When the sources are compiled with
_FILE_OFFSET_BITS == 64this function is available under the namelstatand so transparently replaces the interface for small files on 32-bit machines.