statfs, fstatfs - get file system information
int statfs (const char *path, struct statfs *buf, int len, int fstyp);
int fstatfs (int fildes, struct statfs *buf, int len, int fstyp);
statfs 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 */
long f_bsize; /* Block size */
long 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; /* Volume name */
char f_fpack; /* Pack name */
In ABI N32 applications, the fields f_blocks, f_bfree, f_files, and
f_ffree are of type __int64_t (long long) instead of long.
fstatfs is similar, except that the file named by path in statfs is
instead identified by an open file descriptor filedes obtained from a
successful open(2), creat(2), dup(2), fcntl(2), or pipe(2) system call.
statfs obsoletes ustat(2) and should be used in preference to it in new
For XFS filesystems with real-time subvolumes (see xfs(4)), the statfs(2)
system call returns information concerning the data portion of the
filesystem only. The syssgi(2) system call with the SGI_XFS_OPERATIONS
request argument can be used to acquire information concerning the size
and usage of space within the real-time portion of the filesystem.
statfs and fstatfs will fail if one or more of the following are 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
[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).
Upon successful completion a value of 0 is returned. Otherwise, a value
of -1 is returned and errno is set to indicate the error.
chmod(2), chown(2), creat(2), link(2), mknod(2), pipe(2), read(2),
statvfs(2), time(2), unlink(2), utime(2), write(2), fs(4).
PPPPaaaaggggeeee 2222 [ Back ]