POSIX defines certain system-specific options in the system calls for operating on files. Some systems support these options and others do not. Since these options are provided in the kernel, not in the library, simply using the GNU C Library does not guarantee that any of these features is supported; it depends on the system you are using. They can also vary between file systems on a single machine.
This section describes the macros you can test to determine whether a
particular option is supported on your machine. If a given macro is
defined in unistd.h, then its value says whether the
corresponding feature is supported. (A value of -1
indicates no;
any other value indicates yes.) If the macro is undefined, it means
particular files may or may not support the feature.
Since all the machines that support the GNU C Library also support NFS,
one can never make a general statement about whether all file systems
support the _POSIX_CHOWN_RESTRICTED
and _POSIX_NO_TRUNC
features. So these names are never defined as macros in the GNU C Library.
If this option is in effect, the
chown
function is restricted so that the only changes permitted to nonprivileged processes is to change the group owner of a file to either be the effective group ID of the process, or one of its supplementary group IDs. See File Owner.
If this option is in effect, file name components longer than
NAME_MAX
generate anENAMETOOLONG
error. Otherwise, file name components that are too long are silently truncated.
This option is only meaningful for files that are terminal devices. If it is enabled, then handling for special control characters can be disabled individually. See Special Characters.
If one of these macros is undefined, that means that the option might be
in effect for some files and not for others. To inquire about a
particular file, call pathconf
or fpathconf
.
See Pathconf.