Other meanings of IEEE 1003.1
OPERATING-SYSTEM STANDARD
IEEE 1003.1 is the IEEE standard defining the POSIX operating-system interface: a portable set of application programming interfaces, shell behavior, utilities, and conformance requirements for UNIX-like systems. It allows software written against standardized services to be moved among compliant operating systems with fewer changes.1
IEEE 1003.1 standardizes the interface between application programs and an operating system. Its central material covers process creation and control, files and directories, signals, pipes, input and output, terminal handling, user and group identities, time, and other services commonly required by portable software.2
The interface is expressed chiefly through the C programming language functions and headers specified by the standard, together with command-line utilities and a standardized shell language. POSIX does not prescribe a single kernel design, filesystem implementation, graphical environment, or programming language; it specifies observable behavior at the application boundary. This distinction permits substantially different systems to present a compatible interface.
Conformance is organized around required interfaces, optional facilities, and implementation-defined or unspecified behavior. A system may therefore support the core POSIX interface without implementing every extension, while applications can test feature macros, option groups, and runtime configuration values before relying on optional capabilities.3
The standard separates definitions from detailed function and utility specifications. Its application programming interface includes functions such as fork(), exec(), open(), read(), and pthread_create(), but compliance depends on exact rules governing errors, permissions, signal interactions, pathname resolution, and concurrency—not merely on whether a similarly named function exists. Profiles and option groups help characterize subsets intended for particular classes of systems, including real-time implementations.4
IEEE 1003.1 emerged from efforts to make the growing UNIX ecosystem less fragmented. The first POSIX.1 edition was published in 1988, and later revisions incorporated new interfaces, corrections, and requirements developed through public technical review.1 The name POSIX was proposed by Richard Stallman, combining “Portable Operating System Interface” with an X associated with UNIX.
Modern revisions are developed through the Austin Group, a joint working forum involving IEEE, The Open Group, and ISO/IEC participants.5 The resulting text is closely aligned with The Open Group Base Specifications, commonly called the Single UNIX Specification. POSIX and UNIX are related but not identical: POSIX defines standardized interfaces, while UNIX branding and certification are governed through The Open Group’s separate trademark and certification programs.
POSIX portability often depends on details that are invisible in simple demonstrations. A file descriptor is an integer handle whose inheritance across fork(), replacement across exec(), and interaction with close-on-exec behavior can affect security and correctness. Likewise, pathname bytes, locale rules, signal interruption, atomicity, and the distinction between unspecified and undefined behavior can materially change an application’s results.
IEEE 1003.1 also reaches beyond the traditional UNIX process-and-file model. It specifies threads, synchronization, asynchronous input and output, scheduling-related interfaces, regular expressions, batch utilities, and internationalization facilities. Some historically important functions remain standardized even when newer software favors safer or more specialized alternatives. Implementations may additionally expose Linux, BSD, or proprietary extensions; portable programs must avoid treating those extensions as POSIX guarantees. The NIST glossary describes POSIX as a family of standards for maintaining compatibility among operating systems.6
IEEE 1003.1 is commonly discussed under the name POSIX.1; related POSIX standards historically covered utilities, test methods, and other subjects, but this entry addresses the IEEE 1003.1 operating-system interface standard.
Help improve the encyclopedia. Reports go straight to the site manager.