.\" Copyright (c) 2006, Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, see
.\" <http://www.gnu.org/licenses/>.
.\" %%%LICENSE_END
.\"
.TH STANDARDS 7 2020-11-01 "Linux" "Linux Programmer's Manual"
.SH NAME
standards \- C and UNIX Standards
.SH DESCRIPTION
The CONFORMING TO section that appears in many manual pages identifies
various standards to which the documented interface conforms.
The following list briefly describes these standards.
.TP
.B V7
Version 7 (also known as Seventh Edition) UNIX,
released by AT&T/Bell Labs in 1979.
After this point, UNIX systems diverged into two main dialects:
BSD and System V.
.TP
.B 4.2BSD
This is an implementation standard defined by the 4.2 release
of the
.IR "Berkeley Software Distribution",
released by the University of California at Berkeley.
This was the first Berkeley release that contained a TCP/IP
stack and the sockets API.
4.2BSD was released in 1983.
.IP
Earlier major BSD releases included
.IR 3BSD
(1980),
.I 4BSD
(1980),
and
.I 4.1BSD
(1981).
.TP
.B 4.3BSD
The successor to 4.2BSD, released in 1986.
.TP
.B 4.4BSD
The successor to 4.3BSD, released in 1993.
This was the last major Berkeley release.
.TP
.B System V
This is an implementation standard defined by AT&T's milestone 1983
release of its commercial System V (five) release.
The previous major AT&T release was
.IR "System III" ,
released in 1981.
.TP
.B System V release 2 (SVr2)
This was the next System V release, made in 1985.
The SVr2 was formally described in the
.I "System V Interface Definition version 1"
.RI ( "SVID 1" )
published in 1985.
.TP
.B System V release 3 (SVr3)
This was the successor to SVr2, released in 1986.
This release was formally described in the
.I "System V Interface Definition version 2"
.RI ( "SVID 2" ).
.TP
.B System V release 4 (SVr4)
This was the successor to SVr3, released in 1989.
This version of System V is described in the "Programmer's Reference
Manual: Operating System API (Intel processors)" (Prentice-Hall
1992, ISBN 0-13-951294-2)
This release was formally described in the
.I "System V Interface Definition version 3"
.RI ( "SVID 3" ),
and is considered the definitive System V release.
.TP
.B SVID 4
System V Interface Definition version 4, issued in 1995.
Available online at
.UR http://www.sco.com\:/developers\:/devspecs/
.UE .
.TP
.B C89
This was the first C language standard, ratified by ANSI
(American National Standards Institute) in 1989
.RI ( X3.159-1989 ).
Sometimes this is known as
.IR "ANSI C" ,
but since C99 is also an
ANSI standard, this term is ambiguous.
This standard was also ratified by
ISO (International Standards Organization) in 1990
.RI ( "ISO/IEC 9899:1990" ),
and is thus occasionally referred to as
.IR "ISO C90" .
.TP
.B C99
This revision of the C language standard was ratified by ISO in 1999
.RI ( "ISO/IEC 9899:1999" ).
Available online at
.UR http://www.open\-std.org\:/jtc1\:/sc22\:/wg14\:/www\:/standards
.UE .
.TP
.B C11
This revision of the C language standard was ratified by ISO in 2011
.RI ( "ISO/IEC 9899:2011" ).
.IP
.B LFS
The Large File Summit specification, completed in 1996.
This specification defined mechanisms that allowed 32-bit systems
to support the use of large files (i.e., 64-bit file offsets).
See
.UR https://www.opengroup.org\:/platform\:/lfs.html
.UE .
.TP
.B POSIX.1-1988
This was the first POSIX standard,
ratified by IEEE as IEEE Std 1003.1-1988,
and subsequently adopted (with minor revisions) as an ISO standard in 1990.
The term "POSIX" was coined by Richard Stallman.
.TP
.B POSIX.1-1990
"Portable Operating System Interface for Computing Environments".
IEEE 1003.1-1990 part 1, ratified by ISO in 1990
.RI ( "ISO/IEC 9945-1:1990" ).
.TP
.B POSIX.2
IEEE Std 1003.2-1992,
describing commands and utilities, ratified by ISO in 1993
.RI ( "ISO/IEC 9945-2:1993" ).
.TP
.BR POSIX.1b " (formerly known as \fIPOSIX.4\fP)"
IEEE Std 1003.1b-1993,
describing real-time facilities
for portable operating systems, ratified by ISO in 1996
.RI ( "ISO/IEC 9945-1:1996" ).
.TP
.B POSIX.1c " (formerly known as \fIPOSIX.4a\fP)"
IEEE Std 1003.1c-1995, which describes the POSIX threads interfaces.
.TP
.BR POSIX.1d
IEEE Std 1003.1c-1999, which describes additional real-time extensions.
.TP
.B POSIX.1g
IEEE Std 1003.1g-2000, which describes networking APIs (including sockets).
.TP
.B POSIX.1j
IEEE Std 1003.1j-2000, which describes advanced real-time extensions.
.TP
.B POSIX.1-1996
A 1996 revision of POSIX.1 which incorporated POSIX.1b and POSIX.1c.
.TP
.B XPG3
Released in 1989, this was the first release of the X/Open
Portability Guide to be based on a POSIX standard (POSIX.1-1988).
This multivolume guide was developed by the X/Open Group,
a multivendor consortium.
.TP
.B XPG4
A revision of the X/Open Portability Guide, released in 1992.
This revision incorporated POSIX.2.
.TP
.B XPG4v2
A 1994 revision of XPG4.
This is also referred to as
.IR "Spec 1170" ,
where 1170 referred to the number of interfaces
defined by this standard.
.TP
.B "SUS (SUSv1)"
Single UNIX Specification.
This was a repackaging of XPG4v2 and other X/Open standards
(X/Open Curses Issue 4 version 2,
X/Open Networking Service (XNS) Issue 4).
Systems conforming to this standard can be branded
.IR "UNIX 95" .
.TP
.B SUSv2
Single UNIX Specification version 2.
Sometimes also referred to (incorrectly) as
.IR XPG5 .
This standard appeared in 1997.
Systems conforming to this standard can be branded
.IR "UNIX 98" .
See also
.UR http://www.unix.org\:/version2/
.UE .)
.TP
.B POSIX.1-2001, SUSv3
This was a 2001 revision and consolidation of the
POSIX.1, POSIX.2, and SUS standards into a single document,
conducted under the auspices of the Austin Group
.UR http://www.opengroup.org\:/austin/
.UE .
The standard is available online at
.UR http://www.unix.org\:/version3/
.UE .
.IP
The standard defines two levels of conformance:
.IR "POSIX conformance" ,
which is a baseline set of interfaces required of a conforming system;
and
.IR "XSI Conformance",
which additionally mandates a set of interfaces
(the "XSI extension") which are only optional for POSIX conformance.
XSI-conformant systems can be branded
.IR "UNIX 03" .
.IP
The POSIX.1-2001 document is broken into four parts:
.IP
.BR XBD :
Definitions, terms, and concepts, header file specifications.
.IP
.BR XSH :
Specifications of functions (i.e., system calls and library
functions in actual implementations).
.IP
.BR XCU :
Specifications of commands and utilities
(i.e., the area formerly described by POSIX.2).
.IP
.BR XRAT :
Informative text on the other parts of the standard.
.IP
POSIX.1-2001 is aligned with C99, so that all of the
library functions standardized in C99 are also
standardized in POSIX.1-2001.
.IP
The Single UNIX Specification version 3 (SUSv3) comprises the
Base Specifications containing XBD, XSH, XCU, and XRAT as above,
plus X/Open Curses Issue 4 version 2 as an extra volume that is
not in POSIX.1-2001.
.IP
Two Technical Corrigenda (minor fixes and improvements)
of the original 2001 standard have occurred:
TC1 in 2003
and TC2 in 2004.
.TP
.B POSIX.1-2008, SUSv4
Work on the next revision of POSIX.1/SUS was completed and
ratified in 2008.
The standard is available online at
.UR http://www.unix.org\:/version4/
.UE .
.IP
The changes in this revision are not as large as those
that occurred for POSIX.1-2001/SUSv3,
but a number of new interfaces are added
and various details of existing specifications are modified.
Many of the interfaces that were optional in
POSIX.1-2001 become mandatory in the 2008 revision of the standard.
A few interfaces that are present in POSIX.1-2001 are marked
as obsolete in POSIX.1-2008, or removed from the standard altogether.
.IP
The revised standard is structured in the same way as its predecessor.
The Single UNIX Specification version 4 (SUSv4) comprises the
Base Specifications containing XBD, XSH, XCU, and XRAT,
plus X/Open Curses Issue 7 as an extra volume that is
not in POSIX.1-2008.
.IP
Again there are two levels of conformance: the baseline
.IR "POSIX Conformance" ,
and
.IR "XSI Conformance" ,
which mandates an additional set of interfaces
beyond those in the base specification.
.IP
In general, where the CONFORMING TO section of a manual page
lists POSIX.1-2001, it can be assumed that the interface also
conforms to POSIX.1-2008, unless otherwise noted.
.IP
Technical Corrigendum 1 (minor fixes and improvements)
of this standard was released in 2013.
.IP
Technical Corrigendum 2 of this standard was released in 2016.
.IP
Further information can be found on the Austin Group web site,
.UR http://www.opengroup.org\:/austin/
.UE .
.TP
.B SUSv4 2016 edition
This is equivalent to POSIX.1-2008, with the addition of
Technical Corrigenda 1 and 2 and the XCurses specification.
.TP
.B POSIX.1-2017
This revision of POSIX is technically identical to POSIX.1-2008 with
Technical Corrigenda 1 and 2 applied.
.TP
.B SUSv4 2018 edition
This is equivalent to POSIX.1-2017, with the addition of
the XCurses specification.
.PP
The interfaces documented in POSIX.1/SUS are available as
manual pages under sections 0p (header files), 1p (commands),
and 3p (functions);
thus one can write "man 3p open".
.SH SEE ALSO
.BR getconf (1),
.BR confstr (3),
.BR pathconf (3),
.BR sysconf (3),
.BR attributes (7),
.BR feature_test_macros (7),
.BR libc (7),
.BR posixoptions (7),
.BR system_data_types (7)
