POSIX is a standard specifying source-code compatibility for C99 and Bourne-family shell programs.

It is often claimed that POSIX is a standard for UNIX-like operating systems. Superficially, this seems true, as C and shell are the primary ways of interacting with *NIX systems, but it isn't strictly true. Totally non-UNIXy systems such as IBM z/OS are POSIX certified.

There is also a lot of confusion with the relationship between POSIX and the Single UNIX Specification (SUS), and the UNIX trademark. This article will clarify that.

The POSIX standard

POSIX is published by 3 different organizations; the Open Group, IEEE, and ISO/IEC. The most recent version of POSIX is POSIX-2008, 2013 edition; that is: the 2008 version of POSIX, with the 2013 technical corrigendum applied.

The Open Group calls this "C138"; that is standard "C082" (2008) with update "U130" (2013) applied.

IEEE calls this "IEEE Std 1003.1-2008, 2013 Edition". Prior to 1997, there were three separate core POSIX documents; 1003.0 for base definitions, 1003.1 for C, and 1003.2 for shell (there were even other non-core documents, such as 1003.5 for Ada). Because of this, you may see references to "POSIX.1" for C things and "POSIX.2" for shell things. However, in 1997, C and shell got rolled into one document.

ISO/IEC calls the base document "ISO/IEC 9945:2009", and calls the corrigendum "ISO/IEC/IEEE 9945:2009/Cor 1:2013".

So, what's up with having 3 versions? They are all the same. I don't mean equivalent, I mean the same. The Open Group and IEEE publish their versions at the same time; identical documents, except with a differing cover page. Then the IEEE version goes to ISO/IEC where it gets approved (which takes time, hence the 2009 instead of 2008), and they insert 3 new pages before the IEEE cover page (ISO cover page, PDF disclaimer/copyright statement, forward with committee information).

There are other IEEE standards bearing the "POSIX" name, but they are not important (for example, IEEE Std 1387.2-1995, containing some administration utilities).

The POSIX certification

There is a POSIX certification. Getting a product certified allows it to use the POSIX mark in the marketing, and allows it to be listed in the POSIX register. However, the register is pretty empty; most certified products choose to not be listed. This certification, contrary to popular myth, does not entitle a system to the UNIX name; the Open Group UNIX certification is required for that.

The Single UNIX Specification

Related to POSIX is the Single Unix Specification (SUS). Back in the day, there were many differences between SUS and POSIX, but today SUS is just POSIX+Curses. SUSv4 is literally a document set (Open Group T101) of two separate documents, Open Group C138 (POSIX-2008), and Open Group C094 (X/Open Curses, Issue 7).

The UNIX certification

There is not a SUS certification; instead, the Open Group has a UNIX certification--but it isn't just testing for compliance with SUS! The Open Group UNIX V7 certification tests for SUSv4, and the UNIX RBAC (user and group permissions), which isn't in SUS/POSIX.

Similarly to the POSIX certification, there is a register. It is more populated than the POSIX register, but still doesn't have anything listed for UNIX V7; only the previous version, UNIX 03.


CategoryUnix