← New search

Other meanings of IEEE 1003.1

OPERATING-SYSTEM STANDARD

IEEE 1003.1

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

1988
first IEEE POSIX.1 edition
publication
POSIX.1
common short name
standard family
C and shell
principal interface forms
programming models
1

Purpose and scope

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.

2

Structure and conformance

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

3

Development and relationship to UNIX

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.

4

Lesser-known aspects

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

Glossary

POSIX
A family of standards defining portable operating-system interfaces, utilities, and shell behavior.
Austin Group
The joint working group that develops and maintains aligned UNIX and POSIX specifications.
conformance
The degree to which an implementation satisfies the standard’s required behavior and documented options.
feature test macro
A C preprocessor definition used to request or expose particular interface versions or option groups.
file descriptor
A process-local nonnegative integer identifying an open file, pipe, socket, or related I/O object.

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.