diff options
Diffstat (limited to 'upstream/archlinux/man0p/unistd.h.0p')
-rw-r--r-- | upstream/archlinux/man0p/unistd.h.0p | 1634 |
1 files changed, 1634 insertions, 0 deletions
diff --git a/upstream/archlinux/man0p/unistd.h.0p b/upstream/archlinux/man0p/unistd.h.0p new file mode 100644 index 00000000..86137f16 --- /dev/null +++ b/upstream/archlinux/man0p/unistd.h.0p @@ -0,0 +1,1634 @@ +'\" et +.TH unistd.h "0P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual" +.\" +.SH PROLOG +This manual page is part of the POSIX Programmer's Manual. +The Linux implementation of this interface may differ (consult +the corresponding Linux manual page for details of Linux behavior), +or the interface may not be implemented on Linux. +.\" +.SH NAME +unistd.h +\(em standard symbolic constants and types +.SH SYNOPSIS +.LP +.nf +#include <unistd.h> +.fi +.SH DESCRIPTION +The +.IR <unistd.h> +header defines miscellaneous symbolic constants and types, and declares +miscellaneous functions. The actual values of the constants are +unspecified except as shown. The contents of this header are shown +below. +.SS "Version Test Macros" +.P +The +.IR <unistd.h> +header shall define the following symbolic constants. The values shall +be suitable for use in +.BR #if +preprocessing directives. +.IP _POSIX_VERSION 6 +.br +Integer value indicating version of this standard (C-language +binding) to which the implementation conforms. For implementations +conforming to POSIX.1\(hy2008, the value shall be 200809L. +.IP _POSIX2_VERSION 6 +.br +Integer value indicating version of the Shell and Utilities volume of POSIX.1 to which the implementation +conforms. For implementations conforming to POSIX.1\(hy2008, the value shall +be 200809L. For profile implementations that define _POSIX_SUBPROFILE +(see +.IR "Section 2.1.5.1" ", " "Subprofiling Considerations") +in +.IR <unistd.h> , +_POSIX2_VERSION may be left undefined or be defined with the value \-1 +to indicate that the Shell and Utilities volume of POSIX.1 is not supported. In this case, a call to +.IR sysconf(_SC_2_VERSION) +shall return either 200809L or \-1 indicating that the Shell and Utilities volume of POSIX.1 is or is +not, respectively, supported at runtime. +.P +The +.IR <unistd.h> +header shall define the following symbolic constant only if +the implementation supports the XSI option; see +.IR "Section 2.1.4" ", " "XSI Conformance". +If defined, its value shall be suitable for use in +.BR #if +preprocessing directives. +.IP _XOPEN_VERSION 6 +.br +Integer value indicating version of the X/Open Portability Guide +to which the implementation conforms. The value shall be 700. +.SS "Constants for Options and Option Groups" +.P +The following symbolic constants, if defined in +.IR <unistd.h> , +shall have a value of \-1, 0, or greater, unless otherwise specified +below. For profile implementations that define _POSIX_SUBPROFILE (see +.IR "Section 2.1.5.1" ", " "Subprofiling Considerations") +in +.IR <unistd.h> , +constants described below as always having a value greater than zero need +not be defined and, if defined, may have a value of \-1, 0, or greater. +The values shall be suitable for use in +.BR #if +preprocessing directives. +.P +If a symbolic constant is not defined or is defined with the value +\-1, the option is not supported for compilation. If it is defined +with a value greater than zero, the option shall always be supported +when the application is executed. If it is defined with the value zero, +the option shall be supported for compilation and might or might not be +supported at runtime. See +.IR "Section 2.1.6" ", " "Options" +for further information about the conformance requirements of these +three categories of support. +.IP _POSIX_ADVISORY_INFO 6 +.br +The implementation supports the Advisory Information option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_ASYNCHRONOUS_IO 6 +.br +The implementation supports asynchronous input and output. +This symbol shall always be set to the value 200809L. +.IP _POSIX_BARRIERS 6 +.br +The implementation supports barriers. +This symbol shall always be set to the value 200809L. +.IP _POSIX_CHOWN_RESTRICTED 6 +.br +The use of +\fIchown\fR() +and +\fIfchown\fR() +is restricted to a process with appropriate privileges, and to changing +the group ID of a file only to the effective group ID of the process or +to one of its supplementary group IDs. This symbol shall be defined +with a value other than \-1. +.IP _POSIX_CLOCK_SELECTION 6 +.br +The implementation supports clock selection. +This symbol shall always be set to the value 200809L. +.IP _POSIX_CPUTIME 6 +.br +The implementation supports the Process CPU-Time Clocks option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_FSYNC 6 +.br +The implementation supports the File Synchronization option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_IPV6 6 +.br +The implementation supports the IPv6 option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_JOB_CONTROL 6 +.br +The implementation supports job control. This symbol shall always be +set to a value greater than zero. +.IP _POSIX_MAPPED_FILES 6 +.br +The implementation supports memory mapped Files. +This symbol shall always be set to the value 200809L. +.IP _POSIX_MEMLOCK 6 +.br +The implementation supports the Process Memory Locking option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_MEMLOCK_RANGE 6 +.br +The implementation supports the Range Memory Locking option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_MEMORY_PROTECTION 6 +.br +The implementation supports memory protection. +This symbol shall always be set to the value 200809L. +.IP _POSIX_MESSAGE_PASSING 6 +.br +The implementation supports the Message Passing option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_MONOTONIC_CLOCK 6 +.br +The implementation supports the Monotonic Clock option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_NO_TRUNC 6 +.br +Pathname components longer than +{NAME_MAX} +generate an error. This symbol shall be defined with a value +other than \-1. +.IP _POSIX_PRIORITIZED_IO 6 +.br +The implementation supports the Prioritized Input and Output option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_PRIORITY_SCHEDULING 6 +.br +The implementation supports the Process Scheduling option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_RAW_SOCKETS 6 +.br +The implementation supports the Raw Sockets option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_READER_WRITER_LOCKS 6 +.br +The implementation supports read-write locks. +This symbol shall always be set to the value 200809L. +.IP _POSIX_REALTIME_SIGNALS 6 +.br +The implementation supports realtime signals. +This symbol shall always be set to the value 200809L. +.IP _POSIX_REGEXP 6 +.br +The implementation supports the Regular Expression Handling option. +This symbol shall always be set to a value greater than zero. +.IP _POSIX_SAVED_IDS 6 +.br +Each process has a saved set-user-ID and a saved set-group-ID. +This symbol shall always be set to a value greater than zero. +.IP _POSIX_SEMAPHORES 6 +.br +The implementation supports semaphores. +This symbol shall always be set to the value 200809L. +.IP _POSIX_SHARED_MEMORY_OBJECTS 6 +.br +The implementation supports the Shared Memory Objects option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_SHELL 6 +.br +The implementation supports the POSIX shell. This symbol shall always +be set to a value greater than zero. +.IP _POSIX_SPAWN 6 +.br +The implementation supports the Spawn option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_SPIN_LOCKS 6 +.br +The implementation supports spin locks. +This symbol shall always be set to the value 200809L. +.IP _POSIX_SPORADIC_SERVER 6 +.br +The implementation supports the Process Sporadic Server option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_SYNCHRONIZED_IO 6 +.br +The implementation supports the Synchronized Input and Output option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_THREAD_ATTR_STACKADDR 6 +.br +The implementation supports the Thread Stack Address Attribute option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_THREAD_ATTR_STACKSIZE 6 +.br +The implementation supports the Thread Stack Size Attribute option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_THREAD_CPUTIME 6 +.br +The implementation supports the Thread CPU-Time Clocks option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_THREAD_PRIO_INHERIT 6 +.br +The implementation supports the Non-Robust Mutex Priority +Inheritance option. If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_THREAD_PRIO_PROTECT 6 +.br +The implementation supports the Non-Robust Mutex Priority +Protection option. If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_THREAD_PRIORITY_SCHEDULING 6 +.br +The implementation supports the Thread Execution Scheduling option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_THREAD_PROCESS_SHARED 6 +.br +The implementation supports the Thread Process-Shared Synchronization +option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_THREAD_ROBUST_PRIO_INHERIT 6 +.br +The implementation supports the Robust Mutex Priority Inheritance +option. If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_THREAD_ROBUST_PRIO_PROTECT 6 +.br +The implementation supports the Robust Mutex Priority Protection +option. If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_THREAD_SAFE_FUNCTIONS 6 +.br +The implementation supports thread-safe functions. +This symbol shall always be set to the value 200809L. +.IP _POSIX_THREAD_SPORADIC_SERVER 6 +.br +The implementation supports the Thread Sporadic Server option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_THREADS 6 +.br +The implementation supports threads. +This symbol shall always be set to the value 200809L. +.IP _POSIX_TIMEOUTS 6 +.br +The implementation supports timeouts. +This symbol shall always be set to the value 200809L. +.IP _POSIX_TIMERS 6 +.br +The implementation supports timers. +This symbol shall always be set to the value 200809L. +.IP _POSIX_TRACE 6 +.br +The implementation supports the Trace option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_TRACE_EVENT_FILTER 6 +.br +The implementation supports the Trace Event Filter option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_TRACE_INHERIT 6 +.br +The implementation supports the Trace Inherit option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_TRACE_LOG 6 +.br +The implementation supports the Trace Log option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_TYPED_MEMORY_OBJECTS 6 +.br +The implementation supports the Typed Memory Objects option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX_V6_ILP32_OFF32 6 +.br +The implementation provides a C-language compilation environment with +32-bit +.BR int , +.BR long , +.BR pointer , +and +.BR off_t +types. +.IP _POSIX_V6_ILP32_OFFBIG 6 +.br +The implementation provides a C-language compilation environment with +32-bit +.BR int , +.BR long , +and +.BR pointer +types and an +.BR off_t +type using at least 64 bits. +.IP _POSIX_V6_LP64_OFF64 6 +.br +The implementation provides a C-language compilation environment with +32-bit +.BR int +and 64-bit +.BR long , +.BR pointer , +and +.BR off_t +types. +.IP _POSIX_V6_LPBIG_OFFBIG 6 +.br +The implementation provides a C-language compilation environment with +an +.BR int +type using at least 32 bits and +.BR long , +.BR pointer , +and +.BR off_t +types using at least 64 bits. +.IP _POSIX_V7_ILP32_OFF32 6 +.br +The implementation provides a C-language compilation environment with +32-bit +.BR int , +.BR long , +.BR pointer , +and +.BR off_t +types. +.IP _POSIX_V7_ILP32_OFFBIG 6 +.br +The implementation provides a C-language compilation environment with +32-bit +.BR int , +.BR long , +and +.BR pointer +types and an +.BR off_t +type using at least 64 bits. +.IP _POSIX_V7_LP64_OFF64 6 +.br +The implementation provides a C-language compilation environment with +32-bit +.BR int +and 64-bit +.BR long , +.BR pointer , +and +.BR off_t +types. +.IP _POSIX_V7_LPBIG_OFFBIG 6 +.br +The implementation provides a C-language compilation environment with +an +.BR int +type using at least 32 bits and +.BR long , +.BR pointer , +and +.BR off_t +types using at least 64 bits. +.IP _POSIX2_C_BIND 6 +.br +The implementation supports the C-Language Binding option. This +symbol shall always have the value 200809L. +.IP _POSIX2_C_DEV 6 +.br +The implementation supports the C-Language Development Utilities option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX2_CHAR_TERM 6 +.br +The implementation supports the Terminal Characteristics option. +The value of this symbol reported by +\fIsysconf\fR() +shall either be \-1 or a value greater than zero. +.IP _POSIX2_FORT_DEV 6 +.br +The implementation supports the FORTRAN Development Utilities option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX2_FORT_RUN 6 +.br +The implementation supports the FORTRAN Runtime Utilities option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX2_LOCALEDEF 6 +.br +The implementation supports the creation of locales by the +.IR localedef +utility. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX2_PBS 6 +.br +The implementation supports the Batch Environment Services and +Utilities option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX2_PBS_ACCOUNTING 6 +.br +The implementation supports the Batch Accounting option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX2_PBS_CHECKPOINT 6 +.br +The implementation supports the Batch Checkpoint/Restart option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX2_PBS_LOCATE 6 +.br +The implementation supports the Locate Batch Job Request option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX2_PBS_MESSAGE 6 +.br +The implementation supports the Batch Job Message Request option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX2_PBS_TRACK 6 +.br +The implementation supports the Track Batch Job Request option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX2_SW_DEV 6 +.br +The implementation supports the Software Development Utilities option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _POSIX2_UPE 6 +.br +The implementation supports the User Portability Utilities option. +If this symbol is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this +symbol reported by +\fIsysconf\fR() +shall either be \-1 or 200809L. +.IP _XOPEN_CRYPT 6 +.br +The implementation supports the X/Open Encryption Option Group. +.IP _XOPEN_ENH_I18N 6 +.br +The implementation supports the Issue 4, Version 2 Enhanced +Internationalization Option Group. This symbol shall always be set +to a value other than \-1. +.IP _XOPEN_REALTIME 6 +.br +The implementation supports the X/Open Realtime Option Group. +.IP _XOPEN_REALTIME_THREADS 6 +.br +The implementation supports the X/Open Realtime Threads Option Group. +.IP _XOPEN_SHM 6 +.br +The implementation supports the Issue 4, Version 2 Shared Memory Option +Group. This symbol shall always be set to a value other than \-1. +.IP _XOPEN_STREAMS 6 +.br +The implementation supports the XSI STREAMS Option Group. +.IP _XOPEN_UNIX 6 +.br +The implementation supports the XSI option. +.IP _XOPEN_UUCP 6 +.br +The implementation supports the UUCP Utilities option. If this symbol +is defined in +.IR <unistd.h> , +it shall be defined to be \-1, 0, or 200809L. The value of this symbol +reported by +\fIsysconf\fR() +shall be either \-1 or 200809L. +.SS "Execution-Time Symbolic Constants" +.P +If any of the following symbolic constants are not defined in the +.IR <unistd.h> +header, the value shall vary depending on the file to which it +is applied. If defined, they shall have values suitable for use in +.BR #if +preprocessing directives. +.P +If any of the following symbolic constants are defined to have value +\-1 in the +.IR <unistd.h> +header, the implementation shall not provide the option on any file; if +any are defined to have a value other than \-1 in the +.IR <unistd.h> +header, the implementation shall provide the option on all applicable +files. +.P +All of the following values, whether defined as symbolic constants in +.IR <unistd.h> +or not, may be queried with respect to a specific file using the +\fIpathconf\fR() +or +\fIfpathconf\fR() +functions: +.IP _POSIX_ASYNC_IO 6 +.br +Asynchronous input or output operations may be performed for the +associated file. +.IP _POSIX_PRIO_IO 6 +.br +Prioritized input or output operations may be performed for the +associated file. +.IP _POSIX_SYNC_IO 6 +.br +Synchronized input or output operations may be performed for the +associated file. +.P +If the following symbolic constants are defined in the +.IR <unistd.h> +header, they apply to files and all paths in all file systems on +the implementation: +.IP _POSIX_TIMESTAMP_RESOLUTION 6 +.br +The resolution in nanoseconds for all file timestamps. +.IP _POSIX2_SYMLINKS 6 +.br +Symbolic links can be created. +.SS "Constants for Functions" +.P +The +.IR <unistd.h> +header shall define NULL as described in +.IR <stddef.h> . +.P +The +.IR <unistd.h> +header shall define the following symbolic constants for use with the +\fIaccess\fR() +function. The values shall be suitable for use in +.BR #if +preprocessing directives. +.IP F_OK 12 +Test for existence of file. +.IP R_OK 12 +Test for read permission. +.IP W_OK 12 +Test for write permission. +.IP X_OK 12 +Test for execute (search) permission. +.P +The constants F_OK, R_OK, W_OK, and X_OK and the expressions +\fIR_OK\fP|\fIW_OK\fP, \fIR_OK\fP|\fIX_OK\fP, and +\fIR_OK\fP|\fIW_OK\fP|\fIX_OK\fP shall all have distinct values. +.P +The +.IR <unistd.h> +header shall define the following symbolic constants for the +\fIconfstr\fR() +function: +.IP _CS_PATH 6 +.br +This is the value for the +.IR PATH +environment variable that finds all of the standard utilities that are +provided in a manner accessible via the +.IR exec +family of functions. +.IP _CS_POSIX_V7_ILP32_OFF32_CFLAGS 6 +.br +If \fIsysconf\fP(_SC_V7_ILP32_OFF32) returns \-1, the meaning of +this value is unspecified. Otherwise, this value is the set of initial +options to be given to the +.IR c99 +utility to build an application using a programming model with 32-bit +.BR int , +.BR long , +.BR pointer , +and +.BR off_t +types. +.IP _CS_POSIX_V7_ILP32_OFF32_LDFLAGS 6 +.br +If \fIsysconf\fP(_SC_V7_ILP32_OFF32) returns \-1, the meaning of +this value is unspecified. Otherwise, this value is the set of final +options to be given to the +.IR c99 +utility to build an application using a programming model with 32-bit +.BR int , +.BR long , +.BR pointer , +and +.BR off_t +types. +.IP _CS_POSIX_V7_ILP32_OFF32_LIBS 6 +.br +If \fIsysconf\fP(_SC_V7_ILP32_OFF32) returns \-1, the meaning of +this value is unspecified. Otherwise, this value is the set of +libraries to be given to the +.IR c99 +utility to build an application using a programming model with 32-bit +.BR int , +.BR long , +.BR pointer , +and +.BR off_t +types. +.IP _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS 6 +.br +If \fIsysconf\fP(_SC_V7_ILP32_OFFBIG) returns \-1, the meaning of +this value is unspecified. Otherwise, this value is the set of initial +options to be given to the +.IR c99 +utility to build an application using a programming model with 32-bit +.BR int , +.BR long , +and +.BR pointer +types, and an +.BR off_t +type using at least 64 bits. +.IP _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS 6 +.br +If \fIsysconf\fP(_SC_V7_ILP32_OFFBIG) returns \-1, the meaning of +this value is unspecified. Otherwise, this value is the set of final +options to be given to the +.IR c99 +utility to build an application using a programming model with 32-bit +.BR int , +.BR long , +and +.BR pointer +types, and an +.BR off_t +type using at least 64 bits. +.IP _CS_POSIX_V7_ILP32_OFFBIG_LIBS 6 +.br +If \fIsysconf\fP(_SC_V7_ILP32_OFFBIG) returns \-1, the meaning of +this value is unspecified. Otherwise, this value is the set of +libraries to be given to the +.IR c99 +utility to build an application using a programming model with 32-bit +.BR int , +.BR long , +and +.BR pointer +types, and an +.BR off_t +type using at least 64 bits. +.IP _CS_POSIX_V7_LP64_OFF64_CFLAGS 6 +.br +If \fIsysconf\fP(_SC_V7_LP64_OFF64) returns \-1, the meaning of +this value is unspecified. Otherwise, this value is the set of initial +options to be given to the +.IR c99 +utility to build an application using a programming model with 32-bit +.BR int +and 64-bit +.BR long , +.BR pointer , +and +.BR off_t +types. +.IP _CS_POSIX_V7_LP64_OFF64_LDFLAGS 6 +.br +If \fIsysconf\fP(_SC_V7_LP64_OFF64) returns \-1, the meaning of +this value is unspecified. Otherwise, this value is the set of final +options to be given to the +.IR c99 +utility to build an application using a programming model with 32-bit +.BR int +and 64-bit +.BR long , +.BR pointer , +and +.BR off_t +types. +.IP _CS_POSIX_V7_LP64_OFF64_LIBS 6 +.br +If \fIsysconf\fP(_SC_V7_LP64_OFF64) returns \-1, the meaning of +this value is unspecified. Otherwise, this value is the set of +libraries to be given to the +.IR c99 +utility to build an application using a programming model with 32-bit +.BR int +and 64-bit +.BR long , +.BR pointer , +and +.BR off_t +types. +.IP _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS 6 +.br +If \fIsysconf\fP(_SC_V7_LPBIG_OFFBIG) returns \-1, the meaning of +this value is unspecified. Otherwise, this value is the set of initial +options to be given to the +.IR c99 +utility to build an application using a programming model with an +.BR int +type using at least 32 bits and +.BR long , +.BR pointer , +and +.BR off_t +types using at least 64 bits. +.IP _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS 6 +.br +If \fIsysconf\fP(_SC_V7_LPBIG_OFFBIG) returns \-1, the meaning of +this value is unspecified. Otherwise, this value is the set of final +options to be given to the +.IR c99 +utility to build an application using a programming model with an +.BR int +type using at least 32 bits and +.BR long , +.BR pointer , +and +.BR off_t +types using at least 64 bits. +.IP _CS_POSIX_V7_LPBIG_OFFBIG_LIBS 6 +.br +If \fIsysconf\fP(_SC_V7_LPBIG_OFFBIG) returns \-1, the meaning of +this value is unspecified. Otherwise, this value is the set of +libraries to be given to the +.IR c99 +utility to build an application using a programming model with an +.BR int +type using at least 32 bits and +.BR long , +.BR pointer , +and +.BR off_t +types using at least 64 bits. +.IP _CS_POSIX_V7_THREADS_CFLAGS 6 +.br +If +.IR sysconf (_SC_POSIX_THREADS) +returns \-1, the meaning of this value is unspecified. Otherwise, +this value is the set of initial options to be given to the +.IR c99 +utility to build a multi-threaded application. These flags are in addition +to those associated with any of the other _CS_POSIX_V7_*_CFLAGS values +used to specify particular type size programing environments. +.IP _CS_POSIX_V7_THREADS_LDFLAGS 6 +.br +If +.IR sysconf (_SC_POSIX_THREADS) +returns \-1, the meaning of this value is unspecified. Otherwise, +this value is the set of final options to be given to the +.IR c99 +utility to build a multi-threaded application. These flags are in addition +to those associated with any of the other _CS_POSIX_V7_*_LDFLAGS values +used to specify particular type size programing environments. +.IP _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS 6 +.br +This value is a +<newline>-separated +list of names of programming environments supported by the +implementation in which the widths of the +.BR blksize_t , +.BR cc_t , +.BR mode_t , +.BR nfds_t , +.BR pid_t , +.BR ptrdiff_t , +.BR size_t , +.BR speed_t , +.BR ssize_t , +.BR suseconds_t , +.BR tcflag_t , +.BR wchar_t , +and +.BR wint_t +types are no greater than the width of type +.BR long . +The format of each name shall be suitable for use with the +.IR getconf +.BR \-v +option. +.IP _CS_V7_ENV 6 +.br +This is the value that provides the environment variable information +(other than that provided by _CS_PATH) that is required by the +implementation to create a conforming environment, as described in the +implementation's conformance documentation. +.br +.P +The following symbolic constants are reserved for compatibility +with Issue 6: +.P +.nf +_CS_POSIX_V6_ILP32_OFF32_CFLAGS +_CS_POSIX_V6_ILP32_OFF32_LDFLAGS +_CS_POSIX_V6_ILP32_OFF32_LIBS +_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS +_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS +_CS_POSIX_V6_ILP32_OFFBIG_LIBS +_CS_POSIX_V6_LP64_OFF64_CFLAGS +_CS_POSIX_V6_LP64_OFF64_LDFLAGS +_CS_POSIX_V6_LP64_OFF64_LIBS +_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS +_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS +_CS_POSIX_V6_LPBIG_OFFBIG_LIBS +_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS +_CS_V6_ENV +.fi +.P +The +.IR <unistd.h> +header shall define SEEK_CUR, SEEK_END, and SEEK_SET as described in +.IR <stdio.h> . +.P +The +.IR <unistd.h> +header shall define the following symbolic constants as possible +values for the +.IR function +argument to the +\fIlockf\fR() +function: +.IP F_LOCK 12 +Lock a section for exclusive use. +.IP F_TEST 12 +Test section for locks by other processes. +.IP F_TLOCK 12 +Test and lock a section for exclusive use. +.IP F_ULOCK 12 +Unlock locked sections. +.P +The +.IR <unistd.h> +header shall define the following symbolic constants for +\fIpathconf\fR(): +.P +.nf +_PC_2_SYMLINKS +_PC_ALLOC_SIZE_MIN +_PC_ASYNC_IO +_PC_CHOWN_RESTRICTED +_PC_FILESIZEBITS +_PC_LINK_MAX +_PC_MAX_CANON +_PC_MAX_INPUT +_PC_NAME_MAX +_PC_NO_TRUNC +_PC_PATH_MAX +_PC_PIPE_BUF +_PC_PRIO_IO +_PC_REC_INCR_XFER_SIZE +_PC_REC_MAX_XFER_SIZE +_PC_REC_MIN_XFER_SIZE +_PC_REC_XFER_ALIGN +_PC_SYMLINK_MAX +_PC_SYNC_IO +_PC_TIMESTAMP_RESOLUTION +_PC_VDISABLE +.fi +.P +The +.IR <unistd.h> +header shall define the following symbolic constants for +\fIsysconf\fR(): +.P +.nf +_SC_2_C_BIND +_SC_2_C_DEV +_SC_2_CHAR_TERM +_SC_2_FORT_DEV +_SC_2_FORT_RUN +_SC_2_LOCALEDEF +_SC_2_PBS +_SC_2_PBS_ACCOUNTING +_SC_2_PBS_CHECKPOINT +_SC_2_PBS_LOCATE +_SC_2_PBS_MESSAGE +_SC_2_PBS_TRACK +_SC_2_SW_DEV +_SC_2_UPE +_SC_2_VERSION +_SC_ADVISORY_INFO +_SC_AIO_LISTIO_MAX +_SC_AIO_MAX +_SC_AIO_PRIO_DELTA_MAX +_SC_ARG_MAX +_SC_ASYNCHRONOUS_IO +_SC_ATEXIT_MAX +_SC_BARRIERS +_SC_BC_BASE_MAX +_SC_BC_DIM_MAX +_SC_BC_SCALE_MAX +_SC_BC_STRING_MAX +_SC_CHILD_MAX +_SC_CLK_TCK +_SC_CLOCK_SELECTION +_SC_COLL_WEIGHTS_MAX +_SC_CPUTIME +_SC_DELAYTIMER_MAX +_SC_EXPR_NEST_MAX +_SC_FSYNC +_SC_GETGR_R_SIZE_MAX +_SC_GETPW_R_SIZE_MAX +_SC_HOST_NAME_MAX +_SC_IOV_MAX +_SC_IPV6 +_SC_JOB_CONTROL +_SC_LINE_MAX +_SC_LOGIN_NAME_MAX +_SC_MAPPED_FILES +_SC_MEMLOCK +_SC_MEMLOCK_RANGE +_SC_MEMORY_PROTECTION +_SC_MESSAGE_PASSING +_SC_MONOTONIC_CLOCK +_SC_MQ_OPEN_MAX +_SC_MQ_PRIO_MAX +_SC_NGROUPS_MAX +_SC_OPEN_MAX +_SC_PAGE_SIZE +_SC_PAGESIZE +_SC_PRIORITIZED_IO +_SC_PRIORITY_SCHEDULING +_SC_RAW_SOCKETS +_SC_RE_DUP_MAX +_SC_READER_WRITER_LOCKS +_SC_REALTIME_SIGNALS +_SC_REGEXP +_SC_RTSIG_MAX +_SC_SAVED_IDS +_SC_SEM_NSEMS_MAX +_SC_SEM_VALUE_MAX +_SC_SEMAPHORES +_SC_SHARED_MEMORY_OBJECTS +_SC_SHELL +_SC_SIGQUEUE_MAX +_SC_SPAWN +_SC_SPIN_LOCKS +_SC_SPORADIC_SERVER +_SC_SS_REPL_MAX +_SC_STREAM_MAX +_SC_SYMLOOP_MAX +_SC_SYNCHRONIZED_IO +_SC_THREAD_ATTR_STACKADDR +_SC_THREAD_ATTR_STACKSIZE +_SC_THREAD_CPUTIME +_SC_THREAD_DESTRUCTOR_ITERATIONS +_SC_THREAD_KEYS_MAX +_SC_THREAD_PRIO_INHERIT +_SC_THREAD_PRIO_PROTECT +_SC_THREAD_PRIORITY_SCHEDULING +_SC_THREAD_PROCESS_SHARED +_SC_THREAD_ROBUST_PRIO_INHERIT +_SC_THREAD_ROBUST_PRIO_PROTECT +_SC_THREAD_SAFE_FUNCTIONS +_SC_THREAD_SPORADIC_SERVER +_SC_THREAD_STACK_MIN +_SC_THREAD_THREADS_MAX +_SC_THREADS +_SC_TIMEOUTS +_SC_TIMER_MAX +_SC_TIMERS +_SC_TRACE +_SC_TRACE_EVENT_FILTER +_SC_TRACE_EVENT_NAME_MAX +_SC_TRACE_INHERIT +_SC_TRACE_LOG +_SC_TRACE_NAME_MAX +_SC_TRACE_SYS_MAX +_SC_TRACE_USER_EVENT_MAX +_SC_TTY_NAME_MAX +_SC_TYPED_MEMORY_OBJECTS +_SC_TZNAME_MAX +_SC_V7_ILP32_OFF32 +_SC_V7_ILP32_OFFBIG +_SC_V7_LP64_OFF64 +_SC_V7_LPBIG_OFFBIG +_SC_V6_ILP32_OFF32 +_SC_V6_ILP32_OFFBIG +_SC_V6_LP64_OFF64 +_SC_V6_LPBIG_OFFBIG +_SC_VERSION +_SC_XOPEN_CRYPT +_SC_XOPEN_ENH_I18N +_SC_XOPEN_REALTIME +_SC_XOPEN_REALTIME_THREADS +_SC_XOPEN_SHM +_SC_XOPEN_STREAMS +_SC_XOPEN_UNIX +_SC_XOPEN_UUCP +_SC_XOPEN_VERSION +.fi +.P +The two constants _SC_PAGESIZE and _SC_PAGE_SIZE may be defined to +have the same value. +.P +The +.IR <unistd.h> +header shall define the following symbolic constants for file streams: +.IP STDERR_FILENO 14 +File number of +.IR stderr ; +2. +.IP STDIN_FILENO 14 +File number of +.IR stdin ; +0. +.IP STDOUT_FILENO 14 +File number of +.IR stdout ; +1. +.P +The +.IR <unistd.h> +header shall define the following symbolic constant for terminal +special character handling: +.IP _POSIX_VDISABLE 14 +This symbol shall be defined to be the value of a character that shall +disable terminal special character handling as described in +.IR "Section 11.2.6" ", " "Special Control Characters". +This symbol shall always be set to a value other than \-1. +.SS "Type Definitions" +.P +The +.IR <unistd.h> +header shall define the +.BR size_t , +.BR ssize_t , +.BR uid_t , +.BR gid_t , +.BR off_t , +and +.BR pid_t +types as described in +.IR <sys/types.h> . +.P +The +.IR <unistd.h> +header shall define the +.BR intptr_t +type as described in +.IR <stdint.h> . +.SS "Declarations" +.P +The following shall be declared as functions and may also be defined +as macros. Function prototypes shall be provided. +.sp +.RS 4 +.nf + +int access(const char *, int); +unsigned alarm(unsigned); +int chdir(const char *); +int chown(const char *, uid_t, gid_t); +int close(int); +size_t confstr(int, char *, size_t); +char *crypt(const char *, const char *); +int dup(int); +.br +int dup2(int, int); +void _exit(int); +void encrypt(char [64], int); +int execl(const char *, const char *, ...); +int execle(const char *, const char *, ...); +int execlp(const char *, const char *, ...); +int execv(const char *, char *const []); +int execve(const char *, char *const [], char *const []); +int execvp(const char *, char *const []); +int faccessat(int, const char *, int, int); +int fchdir(int); +int fchown(int, uid_t, gid_t); +int fchownat(int, const char *, uid_t, gid_t, int); +int fdatasync(int); +int fexecve(int, char *const [], char *const []); +pid_t fork(void); +long fpathconf(int, int); +int fsync(int); +int ftruncate(int, off_t); +char *getcwd(char *, size_t); +gid_t getegid(void); +uid_t geteuid(void); +gid_t getgid(void); +int getgroups(int, gid_t []); +long gethostid(void); +int gethostname(char *, size_t); +char *getlogin(void); +int getlogin_r(char *, size_t); +int getopt(int, char * const [], const char *); +pid_t getpgid(pid_t); +pid_t getpgrp(void); +pid_t getpid(void); +pid_t getppid(void); +pid_t getsid(pid_t); +uid_t getuid(void); +int isatty(int); +int lchown(const char *, uid_t, gid_t); +int link(const char *, const char *); +int linkat(int, const char *, int, const char *, int); +int lockf(int, int, off_t); +off_t lseek(int, off_t, int); +int nice(int); +long pathconf(const char *, int); +int pause(void); +int pipe(int [2]); +ssize_t pread(int, void *, size_t, off_t); +ssize_t pwrite(int, const void *, size_t, off_t); +ssize_t read(int, void *, size_t); +ssize_t readlink(const char *restrict, char *restrict, size_t); +ssize_t readlinkat(int, const char *restrict, char *restrict, size_t); +int rmdir(const char *); +int setegid(gid_t); +int seteuid(uid_t); +int setgid(gid_t); +.br +int setpgid(pid_t, pid_t); +pid_t setpgrp(void); +int setregid(gid_t, gid_t); +int setreuid(uid_t, uid_t); +pid_t setsid(void); +int setuid(uid_t); +unsigned sleep(unsigned); +void swab(const void *restrict, void *restrict, ssize_t); +int symlink(const char *, const char *); +int symlinkat(const char *, int, const char *); +void sync(void); +long sysconf(int); +pid_t tcgetpgrp(int); +int tcsetpgrp(int, pid_t); +int truncate(const char *, off_t); +char *ttyname(int); +int ttyname_r(int, char *, size_t); +int unlink(const char *); +int unlinkat(int, const char *, int); +ssize_t write(int, const void *, size_t); +.fi +.P +.RE +.P +Implementations may also include the +\fIpthread_atfork\fR() +prototype as defined in +.IR <pthread.h> . +Implementations may also include the +\fIctermid\fR() +prototype as defined in +.IR <stdio.h> . +.P +The +.IR <unistd.h> +header shall declare the following external variables: +.sp +.RS 4 +.nf + +extern char *optarg; +extern int opterr, optind, optopt; +.fi +.P +.RE +.P +Inclusion of the +.IR <unistd.h> +header may make visible all symbols from the headers +.IR <stddef.h> , +.IR <stdint.h> , +and +.IR <stdio.h> . +.LP +.IR "The following sections are informative." +.SH "APPLICATION USAGE" +POSIX.1\(hy2008 only describes the behavior of systems that claim conformance to +it. However, application developers who want to write applications that +adapt to other versions of this standard (or to systems that do not +conform to any POSIX standard) may find it useful to code them so as to +conditionally compile different code depending on the value of +_POSIX_VERSION, for example: +.sp +.RS 4 +.nf + +#if _POSIX_VERSION >= 200112L +/* Use the newer function that copes with large files. */ +off_t pos=ftello(fp); +#else +/* Either this is an old version of POSIX, or _POSIX_VERSION is + not even defined, so use the traditional function. */ +long pos=ftell(fp); +#endif +.fi +.P +.RE +.P +Earlier versions of POSIX.1\(hy2008 and of the Single UNIX Specification +can be identified by the following macros: +.IP "POSIX.1\(hy1988 standard" 6 +.br +_POSIX_VERSION\|=\^=\|198808L +.IP "POSIX.1\(hy1990 standard" 6 +.br +_POSIX_VERSION\|=\^=\|199009L +.IP "ISO\ POSIX\(hy1:\|1996 standard" 6 +.br +_POSIX_VERSION\|=\^=\|199506L +.IP "Single UNIX Specification, Version 1" 6 +.br +_XOPEN_UNIX and _XOPEN_VERSION\|=\^=\|4 +.IP "Single UNIX Specification, Version 2" 6 +.br +_XOPEN_UNIX and _XOPEN_VERSION\|=\^=\|500 +.IP "ISO POSIX\(hy1:\|2001 and Single UNIX Specification, Version 3" 6 +.br +_POSIX_VERSION\|=\^=\|200112L, plus (if the XSI option is supported) +_XOPEN_UNIX and _XOPEN_VERSION\|=\^=\|600 +.P +POSIX.1\(hy2008 does not make any attempt to define application binary +interaction with the underlying operating system. However, application +developers may find it useful to query _SC_VERSION at runtime via +\fIsysconf\fR() +to determine whether the current version of the operating system +supports the necessary functionality as in the following program +fragment: +.sp +.RS 4 +.nf + +if (sysconf(_SC_VERSION) < 200809L) { + fprintf(stderr, "POSIX.1-2008 system required, terminating \en"); + exit(1); +} +.fi +.P +.RE +.P +New applications should not use _XOPEN_SHM or _XOPEN_ENH_I18N. +.SH RATIONALE +As POSIX.1\(hy2008 evolved, certain options became sufficiently standardized that +it was concluded that simply requiring one of the option choices was +simpler than retaining the option. However, for backwards-compatibility, +the option flags (with required constant values) are retained. +.SS "Version Test Macros" +.P +The standard developers considered altering the definition of +_POSIX_VERSION and removing _SC_VERSION from the specification of +\fIsysconf\fR() +since the utility to an application was deemed by some to be minimal, +and since the implementation of the functionality is potentially +problematic. However, they recognized that support for existing +application binaries is a concern to manufacturers, application +developers, and the users of implementations conforming to POSIX.1\(hy2008. +.P +While the example using _SC_VERSION in the APPLICATION USAGE section +does not provide the greatest degree of imaginable utility to the +application developer or user, it is arguably better than a +.BR core +file or some other equally obscure result. (It is also possible for +implementations to encode and recognize application binaries compiled +in various POSIX.1-conforming environments, and modify the semantics of +the underlying system to conform to the expectations of the +application.) For the reasons outlined in the preceding paragraphs and +in the APPLICATION USAGE section, the standard developers elected to +retain the _POSIX_VERSION and _SC_VERSION functionality. +.SS "Compile-Time Symbolic Constants for System-Wide Options" +.P +POSIX.1\(hy2008 includes support in certain areas for the newly adopted +policy governing options and stubs. +.P +This policy provides flexibility for implementations in how they +support options. It also specifies how conforming applications can +adapt to different implementations that support different sets of +options. It allows the following: +.IP " 1." 4 +If an implementation has no interest in supporting an option, it does +not have to provide anything associated with that option beyond the +announcement that it does not support it. +.IP " 2." 4 +An implementation can support a partial or incompatible version of an +option (as a non-standard extension) as long as it does not claim to +support the option. +.IP " 3." 4 +An application can determine whether the option is supported. A +strictly conforming application must check this announcement mechanism +before first using anything associated with the option. +.P +There is an important implication of this policy. POSIX.1\(hy2008 cannot +dictate the behavior of interfaces associated with an option when the +implementation does not claim to support the option. In particular, it +cannot require that a function associated with an unsupported option +will fail if it does not perform as specified. However, this policy +does not prevent a standard from requiring certain functions to always +be present, but that they shall always fail on some implementations. +The +\fIsetpgid\fR() +function in the POSIX.1\(hy1990 standard, for example, is considered appropriate. +.P +The POSIX standards include various options, and the C-language +binding support for an option implies that the implementation must +supply data types and function interfaces. An application must be able +to discover whether the implementation supports each option. +.P +Any application must consider the following three cases for each +option: +.IP " 1." 4 +Option never supported. +.RS 4 +.P +The implementation advertises at compile time that the option will +never be supported. In this case, it is not necessary for the +implementation to supply any of the data types or function interfaces +that are provided only as part of the option. The implementation might +provide data types and functions that are similar to those defined by +POSIX.1\(hy2008, but there is no guarantee for any particular behavior. +.RE +.IP " 2." 4 +Option always supported. +.RS 4 +.P +The implementation advertises at compile time that the option will +always be supported. In this case, all data types and function +interfaces shall be available and shall operate as specified. +.RE +.IP " 3." 4 +Option might or might not be supported. +.RS 4 +.P +Some implementations might not provide a mechanism to specify support +of options at compile time. In addition, the implementation might be +unable or unwilling to specify support or non-support at compile time. +In either case, any application that might use the option at runtime +must be able to compile and execute. The implementation must provide, +at compile time, all data types and function interfaces that are +necessary to allow this. In this situation, there must be a mechanism +that allows the application to query, at runtime, whether the option is +supported. If the application attempts to use the option when it is not +supported, the result is unspecified unless explicitly specified +otherwise in POSIX.1\(hy2008. +.RE +.SH "FUTURE DIRECTIONS" +None. +.SH "SEE ALSO" +.IR "\fB<limits.h>\fP", +.IR "\fB<stddef.h>\fP", +.IR "\fB<stdint.h>\fP", +.IR "\fB<stdio.h>\fP", +.IR "\fB<sys_socket.h>\fP", +.IR "\fB<sys_types.h>\fP", +.IR "\fB<termios.h>\fP", +.IR "\fB<wctype.h>\fP" +.P +.ad l +The System Interfaces volume of POSIX.1\(hy2017, +.IR "\fIaccess\fR\^(\|)", +.IR "\fIalarm\fR\^(\|)", +.IR "\fIchown\fR\^(\|)", +.IR "\fIclose\fR\^(\|)", +.IR "\fIconfstr\fR\^(\|)", +.IR "\fIcrypt\fR\^(\|)", +.IR "\fIctermid\fR\^(\|)", +.IR "\fIdup\fR\^(\|)", +.IR "\fI_Exit\fR\^(\|)", +.IR "\fIencrypt\fR\^(\|)", +.IR "\fIexec\fR\^", +.IR "\fIfchdir\fR\^(\|)", +.IR "\fIfchown\fR\^(\|)", +.IR "\fIfdatasync\fR\^(\|)", +.IR "\fIfork\fR\^(\|)", +.IR "\fIfpathconf\fR\^(\|)", +.IR "\fIfsync\fR\^(\|)", +.IR "\fIftruncate\fR\^(\|)", +.IR "\fIgetcwd\fR\^(\|)", +.IR "\fIgetegid\fR\^(\|)", +.IR "\fIgeteuid\fR\^(\|)", +.IR "\fIgetgid\fR\^(\|)", +.IR "\fIgetgroups\fR\^(\|)", +.IR "\fIgethostid\fR\^(\|)", +.IR "\fIgethostname\fR\^(\|)", +.IR "\fIgetlogin\fR\^(\|)", +.IR "\fIgetopt\fR\^(\|)", +.IR "\fIgetpgid\fR\^(\|)", +.IR "\fIgetpgrp\fR\^(\|)", +.IR "\fIgetpid\fR\^(\|)", +.IR "\fIgetppid\fR\^(\|)", +.IR "\fIgetsid\fR\^(\|)", +.IR "\fIgetuid\fR\^(\|)", +.IR "\fIisatty\fR\^(\|)", +.IR "\fIlchown\fR\^(\|)", +.IR "\fIlink\fR\^(\|)", +.IR "\fIlockf\fR\^(\|)", +.IR "\fIlseek\fR\^(\|)", +.IR "\fInice\fR\^(\|)", +.IR "\fIpause\fR\^(\|)", +.IR "\fIpipe\fR\^(\|)", +.IR "\fIread\fR\^(\|)", +.IR "\fIreadlink\fR\^(\|)", +.IR "\fIrmdir\fR\^(\|)", +.IR "\fIsetegid\fR\^(\|)", +.IR "\fIseteuid\fR\^(\|)", +.IR "\fIsetgid\fR\^(\|)", +.IR "\fIsetpgid\fR\^(\|)", +.IR "\fIsetpgrp\fR\^(\|)", +.IR "\fIsetregid\fR\^(\|)", +.IR "\fIsetreuid\fR\^(\|)", +.IR "\fIsetsid\fR\^(\|)", +.IR "\fIsetuid\fR\^(\|)", +.IR "\fIsleep\fR\^(\|)", +.IR "\fIswab\fR\^(\|)", +.IR "\fIsymlink\fR\^(\|)", +.IR "\fIsync\fR\^(\|)", +.IR "\fIsysconf\fR\^(\|)", +.IR "\fItcgetpgrp\fR\^(\|)", +.IR "\fItcsetpgrp\fR\^(\|)", +.IR "\fItruncate\fR\^(\|)", +.IR "\fIttyname\fR\^(\|)", +.IR "\fIunlink\fR\^(\|)", +.IR "\fIwrite\fR\^(\|)" +.ad b +.\" +.SH COPYRIGHT +Portions of this text are reprinted and reproduced in electronic form +from IEEE Std 1003.1-2017, Standard for Information Technology +-- Portable Operating System Interface (POSIX), The Open Group Base +Specifications Issue 7, 2018 Edition, +Copyright (C) 2018 by the Institute of +Electrical and Electronics Engineers, Inc and The Open Group. +In the event of any discrepancy between this version and the original IEEE and +The Open Group Standard, the original IEEE and The Open Group Standard +is the referee document. The original Standard can be obtained online at +http://www.opengroup.org/unix/online.html . +.PP +Any typographical or formatting errors that appear +in this page are most likely +to have been introduced during the conversion of the source files to +man page format. To report such errors, see +https://www.kernel.org/doc/man-pages/reporting_bugs.html . |