IEEE 1003.1-2024 PDF
POSIX.1-2024 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-2024 comprises four major components (each in an associated volume): 1. General terms, concepts, and interfaces common to all volumes of POSIX.1-2024, including utility conventions and C-language header definitions, are included in the Base Definitions volume of POSIX.1-2024. 2. 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-2024. 3. 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-2024. 4. Extended rationale that did not fit well into the rest of the document structure, containing historical information concerning the contents of POSIX.1-2024 and why features were included or discarded by the standard developers, is included in the Rationale (Informative) volume of POSIX.1-2024. The following areas are outside of the scope of POSIX.1-2024: –Graphics interfaces –Database management system interfaces –Record I/O considerations –Object or binary code portability –System configuration and resource availability POSIX.1-2024 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-2024 are drawn from the following base documents: –IEEE Std 1003.1-2017 (POSIX.1-2017) –IEEE Std 1003.26-2003 (POSIX.26-2003). ISO/IEC 9899: 2018, Programming Languages — C (C17) –ISO/IEC TR 24731-2: 2010, Programming languages, their environments and system software interfaces — Extensions to the C library — Part 2: Dynamic Allocation Functions –The Open Group Standard, 2021, Additional APIs for the Base Specifications Issue 8, Part 1 –The Open Group Standard, 2022, Additional APIs for the Base Specifications Issue 8, Part 2
Several principles guided the development of POSIX.1-2024:0Application-Oriented – The basic goal was to promote portability of application programs across UNIX system environments by developing a clear, consistent, and unambiguous standard for the interface specification of a portable operating system based on the UNIX system documentation. POSIX.1-2024 codifies the common, existing definition of the UNIX system. Interface, Not Implementation – POSIX.1-2024 defines an interface, not an implementation. No distinction is made between library functions and system calls; both are referred to as functions. No details of the implementation of any function are given (although historical practice is sometimes indicated in the RATIONALE section). Symbolic names are given for constants (such as signals and error numbers) rather than numbers. -Source, Not Object, Portability – POSIX.1-2024 has been written so that a program written and translated for execution on one conforming implementation may also be translated for execution on another conforming implementation. POSIX.1-2024 does not guarantee that executable (object or binary) code will execute under a different conforming implementation than that for which it was translated, even if the underlying hardware is identical. -The C Language – The system interfaces and header definitions are written in terms of the standard C language as specified in the ISO C standard. -No Superuser, No System Administration – There was no intention to specify all aspects of an operating system. System administration facilities and functions are excluded from this standard, and functions usable only by the superuser have not been included. Still, an implementation of the standard interface may also implement features not in POSIX.1-2024. POSIX.1-2024 is also not concerned with hardware constraints or system maintenance. -Minimal Interface, Minimally Defined – In keeping with the historical design principles of the UNIX system, the mandatory core facilities of POSIX.1-2024 have been kept as minimal as possible. Additional capabilities have been added as optional extensions. -Broadly Implementable – The developers of POSIX.1-2024 endeavored to make all specified functions implementable across a wide range of existing and potential systems, including:-All of the current major systems that are ultimately derived from the original UNIX system code (Version 7 or later) – Compatible systems that are not derived from the original UNIX system code. -Emulations hosted on entirely different operating systems – Networked systems -Distributed systems – Systems running on a broad range of hardware No direct references to this goal appear in POSIX.1-2024, but some results of it are mentioned in the Rationale (Informative) volume. -Minimal Changes to Historical Implementations – When the original version – IEEE Std 1003.1-1988 – was published, there were no known historical implementations that did not have to change. However, there was a broad consensus on a set of functions, types, definitions, and concepts that formed an interface that was common to most historical implementations. The adoption of the 1988 and 1990 IEEE system interface standards, the 1992 IEEE shell and utilities standard, the various The Open Group (formerly X/Open) specifications, and IEEE Std 1003.1-2001 and its technical corrigenda have consolidated this consensus, and this version reflects the significantly increased level of consensus arrived at since the original versions. The authors of the original versions tried, as much as possible, to follow the principles below when creating new specifications: – By standardizing an interface like one in an historical implementation; for example, directories – By specifying an interface that is readily implementable in terms of, and backwards compatible with, historical implementations, such as the extended tar format defined in the pax utility. – By specifying an interface that, when added to an historical implementation, will not conflict with it; for example, the sigaction() function POSIX.1-2024 is specifically not a codification of a particular vendor’s product. It should be noted that implementations will have different kinds of extensions. Some will reflect “historical usage” and will be preserved for execution of pre-existing applications. These functions should be considered “obsolescent” and the standard functions used for new applications. Some extensions will represent functions beyond the scope of POSIX.1-2024. These need to be used with careful management to be able to adapt to future extensions of POSIX.1-2024 and/or port to implementations that provide these services in a different manner. -Minimal Changes to Existing Application Code-A goal of POSIX.1-2024 was to minimize additional work for application developers. However, because every known historical implementation will have to change at least slightly to conform, some applications will have to change.
Revision Standard – Active. POSIX.1-2024 is simultaneously IEEE Std 1003.1™-2024 and The Open Group Standard Base Specifications, Issue 8. POSIX.1-2024 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. POSIX.1-2024 is intended to be used by both application developers and system implementors and comprises four major components (each in an associated volume): –General terms, concepts, and interfaces common to all volumes of this standard, including utility conventions and C-language header definitions, are included in the Base Definitions volume. –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. –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. –Extended rationale that did not fit well into the rest of the document structure, which contains historical information concerning the contents of POSIX.1-2024 and why features were included or discarded by the standard developers, is included in the Rationale (Informative) volume.