The POSIX family of standards

Despite its history, POSIX still suffers from a misunderstood scope, bad press, and an apparent lack of use. However, when POSIX is viewed as a programmer’s specification and simple explanations for using specific POSIX standards are given, a very different picture emerges, and the nature of the poor perceptions can be placed in context. OSIX is a family of IEEE standards that supports portable programming. There are actually more than 20 standards and draft documents under the POSIX umbrella, at different stages in the standards development process. In this article each piece of work will be referred to as “POSIX.n,” with “n” denoting the document or its working group, and enough other context will be given to identify the work being discussed. If the document is a completed formal standard, its official number will be cited. Official numbers look like “IEEE Std 1003.n-yyyy,” where 1003 is the IEEE POSIX project, “n” denotes the document, and “yyyy” is the year the standard was completed or last amended. The term “POSIX” is really quite vague, which probably contributes to the confusion surrounding the standards. To some it’s the POSIX.1 system interface standard; to others it’s the POSIX.1 standard plus the POSIX.2 shell and utilities standard. From the IEEE standards administration’s point of view, POSIX is the entire body of work, draft documents, standards, working groups and all. The first standard, POSIX.1 (IEEE Std 1003.1-1990), defines the C language interface to operating system services. The POSIX.1 standard describes its own scope best: