What are the differences between POSIX, the Single UNIX Specification, and the Open Group Base Specifications? I think their purpose is for determining if an OS is Unix?


One important "difference" is the XSI (XOPEN) option group, which specifies a number of traditional Unix interfaces which are unlikely to be applicable to a new operating system that's not "a Unix". Often people will use "SUS" to refer to the full standard including the XSI option, and "POSIX" to refer to the base standard and possibly the non-Unix-centric option groups.

Successive versions of SUS seem to be gradually deprecating parts of the XSI option that were not really useful for writing portable applications and that instead just reflected legacy implementations, and moving a few of the more-useful parts to the base standard.

| improve this answer | |
  • You are mistaken, XSI is (if ever) made mandatory in newer versions of the standard. Also note that according to the author of the POSIX validation test suite, XSI compliance is mandatory unless you like to validate an embedded UNIX platform only. – schily Jun 7 '18 at 12:29
  • 1
    @schily: Citation? – R.. GitHub STOP HELPING ICE Jun 7 '18 at 17:38
  • The current documentation for unistd.h reads: "The <unistd.h> header shall define the following symbolic constant only if the implementation supports the XSI option; see XSI Conformance. If defined, its value shall be suitable for use in #if preprocessing directives. _XOPEN_VERSION" – R.. GitHub STOP HELPING ICE Jun 7 '18 at 17:39
  • Thanks. unix.stackexchange.com/questions/467010/… – Tim Sep 5 '18 at 12:49
  • BTW: for a UNIX branding (which is more than POSIX compliance), you need to implement all XSI enhancements. With dash, you cannot get XSI compliance since dash does not implement multibyte character support and with the usual echo on Linux there is another problem, since echo on Linux does not implement support for escape sequences. – schily Feb 11 at 13:08

Today, POSIX and SUS are basically the same thing; SUS encompasses a little more.

Quoting here:

Beginning in 1998, a joint working group known as the Austin Group began to develop the combined standard that would be known as the Single UNIX Specification Version 3 and as POSIX:2001 (formally: IEEE Std 1003.1-2001). It was released on January 30, 2002


In December 2008, the Austin Group published a new major revision, known as POSIX:2008 (formally: IEEE Std 1003.1-2008). This is the core of the Single UNIX Specification, Version 4

| improve this answer | |
  • POSIX.1-2008 is not version 4 but rather ISSUE 7 of the standard. – schily Jun 7 '18 at 12:30
  • @schily Did I choose badly where to end the second quote? To me, both source and quote seem to clearly relate 'version 4' to SUS, not POSIX. – Daniel Beck Jun 7 '18 at 15:32
  • The term "issue 7" applies to Opengroup. See: pubs.opengroup.org/onlinepubs/9699919799 I may have been confused. So I guess that UNIX95 is SUSv1, UNIX98 is SUSv2, POSIX.1-2001 is SUSv3 and POSIX.1-2008 is SUSv4 – schily Jun 7 '18 at 15:36
  • @schily Right, see the Wikipedia page where the source of the quote goes on to mention issue 7. – Daniel Beck Jun 7 '18 at 17:19

Looking at the top of the Open Group Base Specifications, you will see the standard identifier IEEE Std 1003.1-2008. IEEE Std 1003.1 is what is known as POSIX.1 with 2008 just being the latest incarnation. Looking at POSIX on Wikipedia, you will see that the standard contains three parts including:

  • Base Definitions, Issue 7
  • System Interfaces and Headers, Issue 7
  • Commands and Utilities, Issue 7

Basically, POSIX is just the name of the standard developed by the IEEE with the initial version done in 1988. POSIX is not UNIX™ officially simply because IEEE does not own the trademark, but it is the operating system environment and interface found on UNIX™ systems. Later on, The Open Group who controls the UNIX™ trademark got involved with creating a standard based on POSIX called Single UNIX Specification version 2 or SUSv2. Now these two specifications are developed jointly as The Austin Group. The latest version is SUSv4. So, to sum up:

POSIX:2008 = IEEE Std. 1003.1-2008 = SUSv4 = The Open Group Specification Issue 7.

Also, read my answer to What exactly is POSIX?

| improve this answer | |
  • 1
    It is also ISO/IEC 9945-2009 – fpmurphy Jul 9 '11 at 14:25
  • Ah, yes, how lovely it is to have so many standards. I'm still struggling to figure out the differences between ISO/IEC 10646 and Unicode which, while represent identical character sets kept strictly synchronized with each other are still two separate and different standards. I'm not sure why they can't just get along and declare them completely synonymous. – penguin359 Jul 11 '11 at 14:21
  • 1
    In the specific case of POSIX vs SUS, the reason has to do with licensing and trademark. POSIX is generic, can be implemented on any OS. SUS is the standard to define UNIX. Even if they are identical, POSIX is needed for anything *nix., or *nix compatible. SUS must be fulfilled to even attempt getting called UNIX. If SUS didn't exist, than at minimum the UNIX trademark could be weakened. I'm not justifying any corporate action, just speculating on their position. – J. M. Becker Dec 16 '11 at 1:47
  • The IEEE version of the standard today is 100% identical to the SUS version except for the first few pages and the fact that the IEEE version usually appears approx. 6 months later. – schily Jun 7 '18 at 12:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.