STATFS(S) UNIX System V STATFS(S)
Name
statfs, fstatfs - get file system information
Syntax
#include <sys/types.h>
#include <sys/statfs.h>
int statfs (path, buf, len, fstyp)
char *path;
struct statfs *buf;
int len, fstyp;
int fstatfs (fildes, buf, len, fstyp)
int fildes;
struct statfs *buf;
int len, fstyp;
Description
The statfs system call returns a ``generic superblock''
describing a file system. It can be used to acquire
information about mounted as well as unmounted file systems,
and usage is slightly different in the two cases. In all
cases, buf is a pointer to a structure (described below)
which will be filled by the system call, and len is the
number of bytes of information which the system should
return in the structure. len must be no greater than sizeof
(struct statfs) and ordinarily it will contain exactly that
value; if it holds a smaller value, the system will fill the
structure with that number of bytes. (This allows future
versions of the system to grow the structure without
invalidating older binary programs.)
If the file system of interest is currently mounted, path
should name a file which resides on that file system. In
this case the file system type is known to the operating
system and the fstyp argument must be zero. For an
unmounted file system path must name the block special file
containing it and fstyp must contain the (non-zero) file
system type. In both cases 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.
The statfs structure pointed to by buf includes the
following members:
short f_fstyp; /* File system type */
short f_bsize; /* Block size */
short f_frsize; /* Fragment size */
long f_blocks; /* Total number of blocks */
long f_bfree; /* Count of free blocks */
long f_files; /* Total number of file nodes */
long f_ffree; /* Count of free file nodes */
char f_fname[6]; /* Volume name */
char f_fpack[6]; /* Pack name */
The fstatfs system call is similar, except that the file
named by path in statfs is instead identified by an open
file descriptor fildes obtained from a successful open(S),
creat(S), dup(S), fcntl(S), or pipe(S) system call.
The statfs system call obsoletes ustat(S) and should be used
in preference to it in new programs.
The statfs and fstatfs system calls will fail if one or more
of the following is true:
[ENOTDIR] A component of the path prefix is not a
directory.
[ENOENT] The named file does not exist.
[EACCES] Search permission is denied for a component
of the path prefix.
[EFAULT] buf or path points to an invalid address.
[EBADF] fildes is not a valid open file descriptor.
[EINVAL] fstyp is an invalid file system type; path is
not a block special file and fstyp is
nonzero; len is negative or is greater than
sizeof (struct statfs).
[ENOLINK] path points to a remote machine, and the link
to that machine is no longer active.
[EMULTIHOP] Components of path require hopping to
multiple remote machines.
See Also
chmod(S), chown(S), creat(S), link(S), mknod(S), pipe(S),
read(S), time(S), unlink(S), utime(S), write(S), fs(F)
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.
(printed 6/20/89)