POSIX.1-2017 defines a standard operating system interface and environment, including a command interpreter (or "shell"), and common utility programs to support applications portability at the source code level. It is intended to be used by both application developers and system implementors.
POSIX.1-2017 comprises four major components (each in an associated volume):
General terms, concepts, and interfaces common to all volumes of POSIX.1-2017, including utility conventions and C-language header definitions, are included in the Base Definitions volume of POSIX.1-2017.
Definitions for system service functions and subroutines, language-specific system services for the C programming language, function issues, including portability, error handling, and error recovery, are included in the System Interfaces volume of POSIX.1-2017.
Definitions for a standard source code-level interface to command interpretation services (a "shell") and common utility programs for application programs are included in the Shell and Utilities volume of POSIX.1-2017.
Extended rationale that did not fit well into the rest of the document structure, containing historical information concerning the contents of POSIX.1-2017 and why features were included or discarded by the standard developers, is included in the Rationale (Informative) volume of POSIX.1-2017.
The following areas are outside of the scope of POSIX.1-2017:
Graphics interfaces
Database management system interfaces
Record I/O considerations
Object or binary code portability
System configuration and resource availability
POSIX.1-2017 describes the external characteristics and facilities that are of importance to application developers, rather than the internal construction techniques employed to achieve these capabilities. Special emphasis is placed on those functions and facilities that are needed in a wide variety of commercial applications.
The facilities provided in POSIX.1-2017 are drawn from the following base documents:
IEEE Std 1003.1, 2004 Edition (POSIX-1) (incorporating IEEE Std 1003.1-2001, IEEE Std 1003.1-2001/Cor 1-2002, and IEEE Std 1003.1-2001/Cor 2-2004)
The Open Group Technical Standard, 2006, Extended API Set Part 1
The Open Group Technical Standard, 2006, Extended API Set Part 2
The Open Group Technical Standard, 2006, Extended API Set Part 3
The Open Group Technical Standard, 2006, Extended API Set Part 4
ISO/IEC 9899:1999, Programming Languages - C, including ISO/IEC 9899:1999/Cor.1:2001(E), ISO/IEC 9899:1999/Cor.2:2004(E), and ISO/IEC 9899:1999/Cor.3
Emphasis has been placed on standardizing existing practice for existing users, with changes and additions limited to correcting deficiencies in the following areas:
Issues raised by Austin Group defect reports, IEEE Interpretations against IEEE Std 1003.1, and ISO/IEC defect reports against ISO/IEC 9945
Issues raised in corrigenda for The Open Group Technical Standards and working group resolutions from The Open Group
Issues arising from ISO TR 24715:2006, Conflicts between POSIX and the LSB
Changes to make the text self-consistent with the additional material merged
Features, marked Legacy or obsolescent in the base documents, have been considered for removal in this version
A review and reorganization of the options within the standard
Alignment with the ISO/IEC 9899:1999 standard, including ISO/IEC 9899:1999/Cor.2:2004(E)
Conformance requirements for POSIX.1-2017 are defined in Conformance .
The following standards contain provisions which, through references in POSIX.1-2017, constitute provisions of POSIX.1-2017. At the time of publication, the editions indicated were valid. All standards are subject to revision, and parties to agreements based on POSIX.1-2017 are encouraged to investigate the possibility of applying the most recent editions of the standards listed below. Members of IEC and ISO maintain registers of currently valid International Standards.
Change history is described in the Rationale (Informative) volume of POSIX.1-2017, and in the CHANGE HISTORY section of reference pages.
For the purposes of POSIX.1-2017, the following terminology definitions apply:
Describes a permissible optional feature or behavior available to the user or application. The feature or behavior is mandatory for an implementation that conforms to POSIX.1-2017. An application can rely on the existence of the feature or behavior.
Describes a value or behavior that is not defined by POSIX.1-2017 but is selected by an implementor. The value or behavior may vary among implementations that conform to POSIX.1-2017. An application should not rely on the existence of the value or behavior. An application that relies on such a value or behavior cannot be assured to be portable across conforming implementations.
The implementor shall document such a value or behavior so that it can be used correctly by an application.
Describes a feature or behavior that is being retained for compatibility with older applications, but which has limitations which make it inappropriate for developing portable applications. New applications should use alternative means of obtaining equivalent functionality.
Describes a feature or behavior that is optional for an implementation that conforms to POSIX.1-2017. An application should not rely on the existence of the feature or behavior. An application that relies on such a feature or behavior cannot be assured to be portable across conforming implementations.
To avoid ambiguity, the opposite of may is expressed as need not, instead of may not.
For an implementation that conforms to POSIX.1-2017, describes a feature or behavior that is mandatory. An application can rely on the existence of the feature or behavior.
For an application or user, describes a behavior that is mandatory.
For an implementation that conforms to POSIX.1-2017, describes a feature or behavior that is recommended but not mandatory. An application should not rely on the existence of the feature or behavior. An application that relies on such a feature or behavior cannot be assured to be portable across conforming implementations.
For an application, describes a feature or behavior that is recommended programming practice for optimum portability.
Describes the nature of a value or behavior not defined by POSIX.1-2017 which results from use of an invalid program construct or invalid data input.
The value or behavior may vary among implementations that conform to POSIX.1-2017. An application should not rely on the existence or validity of the value or behavior. An application that relies on any particular value or behavior cannot be assured to be portable across conforming implementations.
Describes the nature of a value or behavior not specified by POSIX.1-2017 which results from use of a valid program construct or valid data input.
The value or behavior may vary among implementations that conform to POSIX.1-2017. An application should not rely on the existence or validity of the value or behavior. An application that relies on any particular value or behavior cannot be assured to be portable across conforming implementations.
Definitions and concepts are defined in Definitions and General Concepts.
Some of the utilities in the Shell and Utilities volume of POSIX.1-2017 and functions in the System Interfaces volume of POSIX.1-2017 describe functionality that might not be fully portable to systems meeting the requirements for POSIX conformance (see Conformance).
Where optional, enhanced, or reduced functionality is specified, the text is shaded and a code in the margin identifies the nature of the option, extension, or warning (see Codes). For maximum portability, an application should avoid such functionality.
Unless the primary task of a utility is to produce textual material on its standard output, application developers should not rely on the format or content of any such material that may be produced. Where the primary task is to provide such material, but the output format is incompletely specified, the description is marked with the OF margin code and shading. Application developers are warned not to expect that the output of such an interface on one system is any guide to its behavior on another system.
The codes and their meanings are as follows. See also Margin Code Notation.
[ADV]
Advisory Information
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the ADV margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the ADV margin legend.
[BE]
Batch Environment Services and Utilities
The functionality described is optional.
Where applicable, utilities are marked with the BE margin legend in the SYNOPSIS section. Where additional semantics apply to a utility, the material is identified by use of the BE margin legend.
[CD]
C-Language Development Utilities
The functionality described is optional.
Where applicable, utilities are marked with the CD margin legend in the SYNOPSIS section. Where additional semantics apply to a utility, the material is identified by use of the CD margin legend.
[CPT]
Process CPU-Time Clocks
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the CPT margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the CPT margin legend.
[CX]
Extension to the ISO C standard
The functionality described is an extension to the ISO C standard. Application developers may make use of an extension as it
is supported on all POSIX.1-2017-conforming systems.
With each function or header from the ISO C standard, a statement to the effect that "any conflict is unintentional" is included. That is intended to refer to a direct conflict. POSIX.1-2017 acts in part as a profile of the ISO C standard, and it may choose to further constrain behaviors allowed to vary by the ISO C standard. Such limitations and other compatible differences are not considered conflicts, even if a CX mark is missing. The markings are for information only.
Where additional semantics apply to a function or header, the material is identified by use of the CX margin legend.
[FD]
FORTRAN Development Utilities
The functionality described is optional.
Where applicable, utilities are marked with the FD margin legend in the SYNOPSIS section. Where additional semantics apply to a utility, the material is identified by use of the FD margin legend.
[FR]
FORTRAN Runtime Utilities
The functionality described is optional.
Where applicable, utilities are marked with the FR margin legend in the SYNOPSIS section. Where additional semantics apply to a utility, the material is identified by use of the FR margin legend.
[FSC]
File Synchronization
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the FSC margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the FSC margin legend.
[IP6]
IPV6
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the IP6 margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the IP6 margin legend.
[MC1]
Non-Robust Mutex Priority Protection or Non-Robust Mutex Priority Inheritance or Robust Mutex Priority Protection or Robust Mutex
Priority Inheritance
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
This is a shorthand notation for combinations of multiple option codes.
Where applicable, functions are marked with the MC1 margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the MC1 margin legend.
Refer to Margin Code Notation.
[ML]
Process Memory Locking
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the ML margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the ML margin legend.
[MLR]
Range Memory Locking
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the MLR margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the MLR margin legend.
[MON]
Monotonic Clock
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the MON margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the MON margin legend.
[MSG]
Message Passing
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the MSG margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the MSG margin legend.
[MX] IEC
60559 Floating-Point
The functionality described is optional. The functionality described is mandated by the ISO C standard only for
implementations that define __STDC_IEC_559__.
[MXX]
IEC 60559 Floating-Point Extension
The functionality described is optional. The functionality described is part of the IEC 60559 Floating-Point option, but is an
extension to the ISO C standard.
[OB]
Obsolescent
The functionality described may be removed in a future version of this volume of POSIX.1-2017. Strictly Conforming POSIX
Applications and Strictly Conforming XSI Applications shall not use obsolescent features.
Where applicable, the material is identified by use of the OB margin legend.
[OF]
Output Format Incompletely Specified
The functionality described is an XSI extension. The format of the output produced by the utility is not fully specified. It is
therefore not possible to post-process this output in a consistent fashion. Typical problems include unknown length of strings and
unspecified field delimiters.
Where applicable, the material is identified by use of the OF margin legend.
[OH]
Optional Header
In the SYNOPSIS section of some interfaces in the System Interfaces volume of POSIX.1-2017 an included header is marked as in the
following example:
[OH] #include <sys/types.h> #include <fcntl.h> int open(const char *path, int oflag, ...);
The OH margin legend indicates that the optional header defines constants that will be needed if the function is called with certain flag arguments; thus it may be required for some of the functionality described, but is not needed otherwise.
[PIO]
Prioritized Input and Output
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the PIO margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the PIO margin legend.
[PS]
Process Scheduling
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the PS margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the PS margin legend.
[RPI]
Robust Mutex Priority Inheritance
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the RPI margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the RPI margin legend.
[RPP]
Robust Mutex Priority Protection
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the RPP margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the RPP margin legend.
[RS] Raw
Sockets
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the RS margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the RS margin legend.
[SD]
Software Development Utilities
The functionality described is optional.
Where applicable, utilities are marked with the SD margin legend in the SYNOPSIS section. Where additional semantics apply to a utility, the material is identified by use of the SD margin legend.
[SHM]
Shared Memory Objects
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the SHM margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the SHM margin legend.
[SIO]
Synchronized Input and Output
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the SIO margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the SIO margin legend.
[SPN]
Spawn
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the SPN margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the SPN margin legend.
[SS]
Process Sporadic Server
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the SS margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the SS margin legend.
[TCT]
Thread CPU-Time Clocks
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the TCT margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the TCT margin legend.
[TEF]
Trace Event Filter
The functionality described is optional. This functionality is dependent on support for the Trace option. The functionality
described is also an extension to the ISO C standard.
Where applicable, functions are marked with the TEF margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the TEF margin legend.
[TPI]
Non-Robust Mutex Priority Inheritance
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the TPI margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the TPI margin legend.
[TPP]
Non-Robust Mutex Priority Protection
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the TPP margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the TPP margin legend.
[TPS]
Thread Execution Scheduling
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the TPS margin legend for the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the TPS margin legend.
[TRC]
Trace
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the TRC margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the TRC margin legend.
[TRI]
Trace Inherit
The functionality described is optional. This functionality is dependent on support for the Trace option. The functionality
described is also an extension to the ISO C standard.
Where applicable, functions are marked with the TRI margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the TRI margin legend.
[TRL]
Trace Log
The functionality described is optional. This functionality is dependent on support for the Trace option. The functionality
described is also an extension to the ISO C standard.
Where applicable, functions are marked with the TRL margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the TRL margin legend.
[TSA]
Thread Stack Address Attribute
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the TSA margin legend for the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the TSA margin legend.
[TSH]
Thread Process-Shared Synchronization
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the TSH margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the TSH margin legend.
[TSP]
Thread Sporadic Server
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the TSP margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the TSP margin legend.
[TSS]
Thread Stack Size Attribute
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the TSS margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the TSS margin legend.
[TYM]
Typed Memory Objects
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the TYM margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the TYM margin legend.
[UP]
User Portability Utilities
The functionality described is optional.
Where applicable, utilities are marked with the UP margin legend in the SYNOPSIS section. Where additional semantics apply to a utility, the material is identified by use of the UP margin legend.
[UU]
UUCP Utilities
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the UU margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the UU margin legend.
[XSI]
X/Open System Interfaces
The functionality described is part of the X/Open Systems Interfaces option. Functionality marked XSI is an extension to the
ISO C standard. Application developers may confidently make use of such extensions on all systems supporting the X/Open System
Interfaces option.
If an entire SYNOPSIS section is shaded and marked XSI, all the functionality described in that reference page is an extension. See XSI Conformance.
[XSR]
XSI STREAMS
The functionality described is optional. The functionality described is also an extension to the ISO C standard.
Where applicable, functions are marked with the XSR margin legend in the SYNOPSIS section. Where additional semantics apply to a function, the material is identified by use of the XSR margin legend.
Some of the functionality described in POSIX.1-2017 depends on support of more than one option, or independently may depend on several options. The following notation for margin codes is used to denote the following cases.
In this case, margin codes have a <space> separator; for example:
[SHM] This feature requires support for only the Shared Memory Objects option.
[SHM TYM] This feature requires support for both the Shared Memory Objects option and the Typed Memory Objects option; that is, an application which uses this feature is portable only between implementations that provide both options.
In this case, margin codes have a '|' separator to denote the logical OR; for example:
[SHM|TYM] This feature is dependent on support for either the Shared Memory Objects option or the Typed Memory Objects option; that is, an application which uses this feature is portable between implementations that provide any (or all) of the options.
The following shorthand notations are used:
[MC1] The MC1 margin code is shorthand for TPP|TPI|RPP|RPI. Features which are shaded with this margin code require support of either the Non-Robust Mutex Priority Protection option or the Non-Robust Mutex Priority Inheritance option or the Robust Mutex Priority Protection option or the Robust Mutex Priority Inheritance option.
Where large sections of text are dependent on support for an option, a lead-in text block is provided and shaded accordingly; for example:
[XSI] This section describes extensions to support interprocess communication. The functionality described in this section shall be provided on implementations that support the XSI option (and the rest of this section is not further marked).
return to top of page