POSIX defines certain system-specific options that not all POSIX systems support. Since these options are provided in the kernel, not in the library, simply using the GNU C library does not guarantee any of these features is supported; it depends on the system you are using.
You can test for the availability of a given option using the macros in
this section, together with the function sysconf
. The macros are
defined only if you include unistd.h.
For the following macros, if the macro is defined in unistd.h,
then the option is supported. Otherwise, the option may or may not be
supported; use sysconf
to find out. See Sysconf.
If this symbol is defined, it indicates that the system supports job control. Otherwise, the implementation behaves as if all processes within a session belong to a single process group. See Job Control.
If this symbol is defined, it indicates that the system remembers the effective user and group IDs of a process before it executes an executable file with the set-user-ID or set-group-ID bits set, and that explicitly changing the effective user or group IDs back to these values is permitted. If this option is not defined, then if a nonprivileged process changes its effective user or group ID to the real user or group ID of the process, it can't change it back again. See Enable/Disable Setuid.
For the following macros, if the macro is defined in unistd.h,
then its value indicates whether the option is supported. A value of
-1
means no, and any other value means yes. If the macro is not
defined, then the option may or may not be supported; use sysconf
to find out. See Sysconf.
If this symbol is defined, it indicates that the system has the POSIX.2 C compiler command,
c89
. The GNU C library always defines this as1
, on the assumption that you would not have installed it if you didn't have a C compiler.
If this symbol is defined, it indicates that the system has the POSIX.2 Fortran compiler command,
fort77
. The GNU C library never defines this, because we don't know what the system has.
If this symbol is defined, it indicates that the system has the POSIX.2
asa
command to interpret Fortran carriage control. The GNU C library never defines this, because we don't know what the system has.
If this symbol is defined, it indicates that the system has the POSIX.2
localedef
command. The GNU C library never defines this, because we don't know what the system has.
If this symbol is defined, it indicates that the system has the POSIX.2 commands
ar
,make
, andstrip
. The GNU C library always defines this as1
, on the assumption that you had to havear
andmake
to install the library, and it's unlikely thatstrip
would be absent when those are present.