pathconf(2)pathconf(2)NAMEpathconf(), fpathconf() - get configurable path name variables
The and functions provide a method for applications to determine the
value of a configurable limit or option associated with a file or
directory (see limits(5) and
For the path argument points to the path name of a file or directory.
For the fildes argument is an open file descriptor.
For both functions, the name argument represents the variable to be
queried regarding the file or directory to which the other argument
The following table lists the configuration variables available from
and and lists for each variable the associated value of the name argu‐
Variable │ Value of name │ Notes
LINK_MAX │ _PC_LINK_MAX │ 1
MAX_CANON │ _PC_MAX_CANON │ 2
MAX_INPUT │ _PC_MAX_INPUT │ 2
│ _PC_FILESIZEBITS │ 3, 4, 10
NAME_MAX │ _PC_NAME_MAX │ 3, 4
PATH_MAX │ _PC_PATH_MAX │ 4, 5
PIPE_BUF │ _PC_PIPE_BUF │ 6
_POSIX_ASYNC_IO │ _PC_ASYNC_IO │ 1, 11
_POSIX_CHOWN_RESTRICTED │ _PC_CHOWN_RESTRICTED │ 7, 8
_POSIX_NO_TRUNC │ _PC_NO_TRUNC │ 3, 4
_POSIX_PRIO_IO │ _PC_PRIO_IO │ 1, 12
_POSIX_SYNC_IO │ _PC_SYNC_IO │ 9
_POSIX_VDISABLE │ _PC_V_DISABLE │ 2
The variables in the table are defined as constants in or if they do
not vary from one path name to another. The associated values of the
name argument are defined in
The following notes further qualify the table above.
1. If path or fildes refers to a directory, the value returned
applies to the directory itself.
2. If the variable is constant, the value returned is identi‐
cal to the variable's definition in or regardless of the
type of fildes or path. The behavior is undefined if path
or fildes does not refer to a terminal file.
3. If path or fildes refers to a directory, the value returned
applies to the file names within the directory.
4. If path or fildes does not refer to a directory, or returns
−1 and sets to
5. If path or fildes refers to a directory, the value returned
is the maximum length of a relative path name when the
specified directory is the working directory.
6. If path refers to a FIFO, or if fildes refers to a pipe or
FIFO, the value returned applies to the pipe or FIFO
itself. If path or fildes refers to a directory, the value
returned applies to any FIFOs that exist or can be created
within the directory. If is a constant, the value returned
is identical to the definition of in regardless of the type
of fildes or path. The behavior is undefined for a file
other than a directory, FIFO, or pipe.
7. If path or fildes refers to a directory, the value returned
applies to files of any type, other than directories, that
exist or can be created within the directory.
8. is defined if the privilege group has been granted the
privilege (see getprivgrp(2) and chown(2)). In all other
cases, is undefined and or returns −1 without changing To
determine if can be performed on a file, it is simplest to
attempt the operation and check the return value for fail‐
ure or success.
9. when defined, determines whether synchronized IO operations
may be performed for the associated file (see open(2)). If
path or fildes refers to a directory, it is unspecified
whether or not the implementation supports an association
of the variable name with the specified file.
10. For file systems that are not large file enabled, the
return value will be less than or equal to 32. For file
systems that are large file enabled, the return value will
be between 33 and 63.
11. when defined, determines whether asynchronous I/O opera‐
tions may be performed for the associated file.
12. when defined, determines whether prioritized I/O is sup‐
ported for the associated file.
If the variable corresponding to name is not defined for path or
fildes, the and functions succeed and return a value of −1, without
changing the value of
Upon any other successful completion, these functions return the value
of the named variable with respect to the specified file or directory,
as described above.
Otherwise, a value of −1 is returned and is set to indicate the error.
The and fail if any of the following conditions are encountered:
A component of the path prefix denies search permission.
The fildes argument is not a valid open file
path points outside the allocated address
space of the process.
The value of name is not valid or the implementation
does not support an association of the
variable name with the specified file.
Too many symbolic links were encountered in translating
The length of the specified path name exceeds
bytes, or the length of a component of
the path name exceeds bytes while is in
The file named by path does not exist (for example, path is
null, or a component of path does not
A component of the path prefix is not a directory.
The following example sets val to the value of for the device file
being used as the standard input. If the standard input is a terminal,
this value is the maximum number of input characters that can be
entered on a single input line before typing the newline character:
The following code segment shows two calls to pathconf. The first
determines whether a file name longer than bytes will be truncated to
bytes in the directory. If so, the second call is made to determine
the actual value of so that an error can be printed if a user-supplied
file name stored in filebuf will be truncated in this directory:
The following error can occur:
path or fildes refers to a file for which a value
for name cannot be determined. In particular,
and cannot be determined for an NFS file.
and were developed by HP.
SEE ALSOchown(2), errno(2), limits(5), unistd(5), termio(7).