Get filesystem information, given a path
Synopsis:
#include <sys/statvfs.h>
int statvfs( const char *path,
struct statvfs *buf );
int statvfs64( const char *path,
struct statvfs64 *buf );
Arguments:
-
path
- The name of a file that resides on the filesystem.
-
buf
- A pointer to a buffer where the function can store the information.
Library:
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
Description:
The statvfs() and statvfs64() functions return a "generic superblock"
describing a filesystem that you can use to acquire information about mounted filesystems.
The statvfs64() function is a 64-bit version of
statvfs().
The
fstatvfs() and fstatvfs64()
functions are similar, but they take a file descriptor instead of a path.
The filesystem type is known to the operating system.
You don't need to have read, write, or execute permission for the named file,
but all directories listed in the path name leading
to the file must be searchable.
The buf argument is a pointer to a statvfs or
statvfs64
structure that's filled by the function. It contains at least:
-
unsigned long
f_bsize
- The preferred filesystem blocksize.
-
unsigned long
f_frsize
- The fundamental filesystem blocksize (if supported)
-
fsblkcnt_t
f_blocks
- The total number of blocks on the filesystem, in units of
f_frsize.
-
fsblkcnt_t
f_bfree
- The total number of free blocks.
-
fsblkcnt_t
f_bavail
- The number of free blocks available to a nonsuperuser.
-
fsfilcnt_t
f_files
- The total number of file nodes (inodes).
-
fsfilcnt_t
f_ffree
- The total number of free file nodes.
-
fsfilcnt_t
f_favail
- The number of inodes available to a nonsuperuser.
-
unsigned long
f_fsid
- The filesystem ID (currently the device ID).
-
char
f_basetype[16]
- The type of the target filesystem, as a null-terminated string.
-
unsigned long
f_flag
- A bitmask of flags; the function can set these flags (the
_MOUNT_* and ST_* bits are equivalent):
|
_MOUNT_*
|
ST_*
|
Meaning
|
|
_MOUNT_READONLY
|
ST_RDONLY
|
The filesystem is read-only.
|
|
_MOUNT_NOEXEC
|
ST_NOEXEC
|
The filesystem doesn't permit the loading of executables.
|
|
_MOUNT_NOSUID
|
ST_NOSUID
|
The filesystem doesn't support
setuid()
and
setgid()
semantics.
|
|
_MOUNT_NOCREAT
|
ST_NOCREAT
|
You can't create files on the filesystem.
|
|
_MOUNT_OFF32
|
ST_OFF32
|
The off_t type is limited to 32 bits.
|
|
_MOUNT_NOATIME
|
ST_NOATIME
|
The filesystem doesn't support the logging of file access times.
|
-
unsigned long
f_namemax
- The maximum filename length.
The values returned for f_files, f_ffree, and
f_favail depend on the filesystem:
-
fs-qnx6.so
- These filesystems have a fixed inodes table,
so they fill in these fields.
-
devf-*
- Flash filesystem drivers estimate the values of these fields, based on the
amount of free space.
Returns:
- 0
- Success.
- -1
- An error occurred
(
errno
is set).
Errors:
-
EACCES
- Search permission is denied on a component of the path prefix.
-
EFAULT
- The path or buf argument points to an
illegal address.
-
EINTR
- A signal was caught during execution.
-
EIO
- An I/O error occurred while reading the filesystem.
-
ELOOP
- Too many symbolic links were encountered in translating path.
-
EMULTIHOP
- Components of path require hopping to multiple remote machines and
the filesystem type doesn't allow it.
-
ENAMETOOLONG
- The length of a path component exceeds
{NAME_MAX} characters, or the length of path
exceeds {PATH_MAX} characters.
-
ENOENT
- Either a component of the path prefix or the
file referred to by path doesn't exist.
-
ENOLINK
- The path argument points to a remote machine and the link
to that machine is no longer active.
-
ENOTDIR
- A component of the path prefix of path isn't a directory.
-
EOVERFLOW
- One of the values to be returned can't be represented correctly in the
structure pointed to by buf.