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.
int stat (const char *filename, struct stat *buf) ¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
The stat function 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 stat fails reporting a nonexistent
file.
The return value is 0 if the operation is successful, or
-1 on failure. In addition to the usual file name errors
(see File Name Errors, the following errno error conditions
are defined for this function:
ENOENTThe file named by filename doesn’t exist.
When the sources are compiled with _FILE_OFFSET_BITS == 64 this
function is in fact stat64 since the LFS interface transparently
replaces the normal implementation.
int stat64 (const char *filename, struct stat64 *buf) ¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
This function is similar to stat but it is also able to work on
files larger than 2^31 bytes on 32-bit systems. To be able to do
this the result is stored in a variable of type struct stat64 to
which buf must point.
When the sources are compiled with _FILE_OFFSET_BITS == 64 this
function is available under the name stat and so transparently
replaces the interface for small files on 32-bit machines.
int fstat (int filedes, struct stat *buf) ¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
The fstat function is like stat, except that it takes an
open file descriptor as an argument instead of a file name.
See Low-Level Input/Output.
Like stat, fstat returns 0 on success and -1
on failure. The following errno error conditions are defined for
fstat:
EBADFThe filedes argument is not a valid file descriptor.
When the sources are compiled with _FILE_OFFSET_BITS == 64 this
function is in fact fstat64 since the LFS interface transparently
replaces the normal implementation.
int fstat64 (int filedes, struct stat64 *buf) ¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
This function is similar to fstat but is able to work on large
files on 32-bit platforms. For large files the file descriptor
filedes should be obtained by open64 or creat64.
The buf pointer points to a variable of type struct stat64
which is able to represent the larger values.
When the sources are compiled with _FILE_OFFSET_BITS == 64 this
function is available under the name fstat and so transparently
replaces the interface for small files on 32-bit machines.
int lstat (const char *filename, struct stat *buf) ¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
The lstat function is like stat, except that it does not
follow symbolic links. If filename is the name of a symbolic
link, lstat returns information about the link itself; otherwise
lstat works like stat. See Symbolic Links.
When the sources are compiled with _FILE_OFFSET_BITS == 64 this
function is in fact lstat64 since the LFS interface transparently
replaces the normal implementation.
int lstat64 (const char *filename, struct stat64 *buf) ¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
This function is similar to lstat but it is also able to work on
files larger than 2^31 bytes on 32-bit systems. To be able to do
this the result is stored in a variable of type struct stat64 to
which buf must point.
When the sources are compiled with _FILE_OFFSET_BITS == 64 this
function is available under the name lstat and so transparently
replaces the interface for small files on 32-bit machines.