April 14, 2004 STATVFS 2

### NAME

statvfs, statvfs1, fstatvfs, fstatvfs1 - get file system statistics

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

```int` statvfs(```const char *path``, struct statvfs *buf`)
```int` statvfs1(```const char *path``, struct statvfs *buf``, int flags`)
```int` fstatvfs(```int fd``, struct statvfs *buf`)
```int` fstatvfs1(```int fd``, struct statvfs *buf``, int flags`)

### DESCRIPTION

statvfs(``) and statvfs1(``) return information about a mounted file system. ```path` is the path name of any file within the mounted file system. ```buf` is a pointer to a statvfs structure defined in statvfs(5).

fstatvfs(``) and fstatvfs1(``) return the same information about an open file referenced by descriptor ```fd`.

The statvfs1(``) and fstatvfs1(``) functions allow an extra ```flags` argument which can be ```ST_WAIT` and ```ST_NOWAIT`. When ```ST_NOWAIT` is specified, then only cached statistics are returned. This can result in significant savings on non-local filesystems, where gathering statistics involves a network communication.

The statvfs(``) and fstatvfs(``) calls are equivalent to the respective statvfs1(``) and fstatvfs1(``) calls with ```ST_WAIT` specified as the ```flags` argument.

### RETURN VALUES

Upon successful completion, a value of 0 is returned. Otherwise, -1 is returned and the global variable errno is set to indicate the error.

### ERRORS

statvfs(``) and statvfs1(``) fail if one or more of the following are true:

[```ENOTDIR`]
  A component of the path prefix of ```path` is not a directory.

[```ENAMETOOLONG`]
  The length of a component of ```path` exceeds ```NAME_MAX` characters, or the length of ```path` exceeds ```PATH_MAX` characters.

[```ENOENT`]
  The file referred to by ```path` does not exist.

[```EACCES`]
  Search permission is denied for a component of the path prefix of ```path`.

[```ELOOP`]
  Too many symbolic links were encountered in translating ```path`.

[```EFAULT`]
  ```buf` or ```path` points to an invalid address.

[```EIO`]
  An I/O error occurred while reading from or writing to the file system.

fstatvfs(``) and fstatvfs1(``) fail if one or more of the following are true:

[```EBADF`]
  ```fd` is not a valid open file descriptor.

[```EFAULT`]
  ```buf` points to an invalid address.

[```EIO`]
  An I/O error occurred while reading from or writing to the file system.

### SEE ALSO

statvfs(5)

### HISTORY

The statvfs(``), statvfs1(``), fstatvfs(``), and fstatvfs1(``) functions first appeared in NetBSD3.0 to replace the statfs(``) family of functions which first appeared in 4.4BSD.