Information Technology— Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API)
|Publication Date:||7 October 1996|
IEEE Std 1003.1-2001 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 applications developers and system implementors.
IEEE Std 1003.1-2001 comprises four major components (each in an associated volume):
1. General terms, concepts, and interfaces common to all volumes of IEEE Std 1003.1-2001, including utility conventions and C-language header definitions, are included in the Base Definitions volume of IEEE Std 1003.1-2001.
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 IEEE Std 1003.1-2001.
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 IEEE Std 1003.1-2001.
4. Extended rationale that did not fit well into the rest of the document structure, containing historical information concerning the contents of IEEE Std 1003.1-2001 and why features were included or discarded by the standard developers, is included in the Rationale (Informative) volume of IEEE Std 1003.1-2001.
The following areas are outside of the scope of IEEE Std 1003.1-2001:
• Graphics interfaces
• Database management system interfaces
• Record I/O considerations
• Object or binary code portability
• System configuration and resource availability
IEEE Std 1003.1-2001 describes the external characteristics and facilities that are of importance to applications 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 IEEE Std 1003.1-2001 are drawn from the following base documents:
• IEEE Std 1003.1-1996 (POSIX-1) (incorporating IEEE Stds 1003.1-1990, 1003.1b-1993, 1003.1c-1995, and 1003.1i-1995)
• The following amendments to the POSIX.1-1990 standard:
- IEEE P1003.1a draft standard (Additional System Services)
- IEEE Std 1003.1d-1999 (Additional Realtime Extensions)
- IEEE Std 1003.1g-2000 (Protocol-Independen
- IEEE Std 1003.1j-2000 (Advanced Realtime Extensions)
- IEEE Std 1003.1q-2000 (Tracing)
• IEEE Std 1003.2-1992 (POSIX-2) (includes IEEE Std 1003.2a-1992)
• The following amendments to the ISO POSIX-2: 1993 standard:
- IEEE P1003.2b draft standard (Additional Utilities)
- IEEE Std 1003.2d-1994 (Batch Environment)
• Open Group Technical Standard, February 1997, System Interface Definitions, Issue 5 (XBD5) (ISBN: 1-85912-186-1, C605)
• Open Group Technical Standard, February 1997, Commands and Utilities, Issue 5 (XCU5) (ISBN: 1-85912-191-8, C604)
• Open Group Technical Standard, February 1997, System Interfaces and Headers, Issue 5 (XSH5) (in 2 Volumes) (ISBN: 1-85912-181-0, C606)
Note: XBD5, XCU5, and XSH5 are collectively referred to as the Base Specifications.
• Open Group Technical Standard, January 2000, Networking Services, Issue 5.2 (XNS5.2) (ISBN: 1-85912-241-8, C808)
• ISO/IEC 9899: 1999, Programming Languages - C.
IEEE Std 1003.1-2001 uses the Base Specifications as its organizational basis and adds the following additional functionality to them, drawn from the base documents above:
• Normative text from the ISO POSIX-1: 1996 standard and the ISO POSIX-2: 1993 standard not included in the Base Specifications
• The amendments to the POSIX.1-1990 standard and the ISO POSIX-2: 1993 standard listed above, except for parts of IEEE Std 1003.1g-2000
• Portability Considerations
• Additional rationale and notes
The following features, marked legacy or obsolescent in the base documents, are not carried forward into IEEE Std 1003.1-2001. Other features from the base documents marked legacy or obsolescent are carried forward unless otherwise noted.
From XSH5, the following legacy interfaces, headers, and external variables are not carried forward:
advance(), brk(), chroot(), compile(), cuserid(), gamma(), getdtablesize(), getpagesize(), getpass(), getw(), putw(), re_comp(), re_exec(), regcmp(), regex(), sbrk(), sigstack (), step(), ttyslot(), valloc(), wait3(), 〈re_comp.h〉g, 〈regexp.h〉, 〈varargs.h〉, loc1, __loc1, loc2, locs
From XCU5, the following legacy utilities are not carried forward:
calendar, cancel, cc, col, cpio, cu, dircmp, dis, egrep, fgrep, line, lint, lpstat, mail, pack, pcat, pg, spell, sum, tar, unpack, uulog, uuname, uupick, uuto
In addition, legacy features within non-legacy reference pages (for example, headers) are not carried forward.
From the ISO POSIX-1: 1996 standard, the following obsolescent features are not carried forward:
Page 112, CLK_TCK
Page 197 tcgetattr() rate returned option
From the ISO POSIX-2: 1993 standard, obsolescent features within the following pages are not carried forward:
Page 75, zero-length prefix within PATH
Page 156, 159 set
Page 178, awk, use of no argument and no parentheses with length
Page 259, ed
Page 272, env
Page 282, find -perm[-]onum
Page 295-296, egrep
Page 299-300, head
Page 305-306, join
Page 309-310, kill
Page 431-433, 435-436, sort
Page 444-445, tail
Page 453, 455-456, touch
Page 464-465, tty
Page 472, uniq
Page 515-516, ex
Page 542-543, expand
Page 563-565, more
Page 574-576, newgrp
Page 578, nice
Page 594-596, renice
Page 597-598, split
Page 600-601, strings
Page 624-625, vi
Page 693, lex
The c89 utility (which specified a compiler for the C Language specified by the ISO/IEC 9899: 1990 standard) has been replaced by a c99 utility (which specifies a compiler for the C Language specified by the ISO/IEC 9899: 1999 standard).
From XSH5, text marked OH (Optional Header) has been reviewed on a case-by-case basis and removed where appropriate. The XCU5 text marked OF (Output Format Incompletely Specified) and UN (Possibly Unsupportable Feature) has been reviewed on a case-by-case basis and removed where appropriate.
For the networking interfaces, the base document is the XNS, Issue 5.2 specification. The following parts of the XNS, Issue 5.2 specification are out of scope and not included in IEEE Std 1003.1-2001:
• Part 3 (XTI)
• Part 4 (Appendixes)
Since there is much duplication between the XNS, Issue 5.2 specification and IEEE Std 1003.1g-2000, material only from the following sections of IEEE Std 1003.1g-2000 has been included:
• General terms related to sockets (Section 2.2.2)
• Socket concepts (Sections 5.1 through 5.3, inclusive)
• The pselect() function (Sections 188.8.131.52 and 6.2.3)
• The sockatmark () function (Section 5.4.13)
• The 〈sys/select.h〉 header (Section 6.2)
Emphasis is placed on standardizing existing practice for existing users, with changes and additions limited to correcting deficiencies in the following areas:
• Issues raised by IEEE or ISO/IEC Interpretations against IEEE Std 1003.1 and IEEE Std 1003.2
• Issues raised in corrigenda for the Base Specifications and working group resolutions from The Open Group
• Corrigenda and resolutions passed by The Open Group for the XNS, Issue 5.2 specification
• Changes to make the text self-consistent with the additional material merged
• A reorganization of the options in order to facilitate profiling, both for smaller profiles such as IEEE Std 1003.13, and larger profiles such as the Single UNIX Specification
• Alignment with the ISO/IEC 9899: 1999 standard