The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
Copyright © 2001-2004 The IEEE and The Open Group, All Rights reserved.

#### NAME

> fstatvfs, statvfs - get file system information

#### SYNOPSIS

> ``[XSI] #include <sys/statvfs.h>
> int fstatvfs(int` fildes`, struct statvfs *`buf`);
> int statvfs(const char *restrict` path`, struct statvfs *restrict` buf`);``
> `
> `

#### DESCRIPTION

> The fstatvfs() function shall obtain information about the file system containing the file referenced by fildes.

> The statvfs() function shall obtain information about the file system containing the file named by path.

> For both functions, the buf argument is a pointer to a statvfs structure that shall be filled. Read, write, or execute permission of the named file is not required.

> The following flags can be returned in the f_flag member:

> ST_RDONLY
>   Read-only file system.
> ST_NOSUID
>   Setuid/setgid bits ignored by exec.

> It is unspecified whether all members of the statvfs structure have meaningful values on all file systems.

#### RETURN VALUE

> Upon successful completion, statvfs() shall return 0. Otherwise, it shall return -1 and set errno to indicate the error.

#### ERRORS

> The fstatvfs() and statvfs() functions shall fail if:

> [EIO]
>   An I/O error occurred while reading the file system.
> [EINTR]
>   A signal was caught during execution of the function.
> [EOVERFLOW]
>   One of the values to be returned cannot be represented correctly in the structure pointed to by buf.

> The fstatvfs() function shall fail if:

> [EBADF]
>   The fildes argument is not an open file descriptor.

> The statvfs() function shall fail if:

> [EACCES]
>   Search permission is denied on a component of the path prefix.
> [ELOOP]
>   A loop exists in symbolic links encountered during resolution of the path argument.
> [ENAMETOOLONG]
>   The length of a pathname exceeds {PATH_MAX} or a pathname component is longer than {NAME_MAX}.
> [ENOENT]
>   A component of path does not name an existing file or path is an empty string.
> [ENOTDIR]
>   A component of the path prefix of path is not a directory.

> The statvfs() function may fail if:

> [ELOOP]
>   More than {SYMLOOP_MAX} symbolic links were encountered during resolution of the path argument.
> [ENAMETOOLONG]
>   Pathname resolution of a symbolic link produced an intermediate result whose length exceeds {PATH_MAX}.

The following sections are informative.

#### EXAMPLES

> ##### Obtaining File System Information Using fstatvfs()

> The following example shows how to obtain file system information for the file system upon which the file named /home/cnd/mod1 resides, using the fstatvfs() function. The /home/cnd/mod1 file is opened with read/write privileges and the open file descriptor is passed to the fstatvfs() function.

>     #include <statvfs.h>
>     #include <fcntl.h>

>     struct statvfs buffer;
>     int            status;
>     ...
>     fildes = open("/home/cnd/mod1", O_RDWR);
>     status  = fstatvfs(fildes, &buffer);

> ##### Obtaining File System Information Using statvfs()

> The following example shows how to obtain file system information for the file system upon which the file named /home/cnd/mod1 resides, using the statvfs() function.

>     #include <statvfs.h>

>     struct statvfs buffer;
>     int            status;
>     ...
>     status = statvfs("/home/cnd/mod1", &buffer);

#### APPLICATION USAGE

> None.

#### RATIONALE

> None.

#### FUTURE DIRECTIONS

> None.

#### SEE ALSO

> chmod(), chown(), creat(), dup(), exec(), fcntl(), link(), mknod(), open(), pipe(), read(), time(), unlink(), utime(), write(), the Base Definitions volume of IEEE Std 1003.1-2001, <sys/statvfs.h>

#### CHANGE HISTORY

> First released in Issue 4, Version 2.

#### Issue 5

> Moved from X/OPEN UNIX extension to BASE.

> Large File Summit extensions are added.

#### Issue 6

> The DESCRIPTION is updated to avoid use of the term "must" for application requirements.

> The restrict keyword is added to the statvfs() prototype for alignment with the ISO/IEC 9899:1999 standard.

> The wording of the mandatory [ELOOP] error condition is updated, and a second optional [ELOOP] error condition is added.

End of informative text.

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
[ Main Index | XBD | XCU | XSH | XRAT ]