WHCSRL 技术网

unistd.h和Unix-like系统使用的标准的版本

在C和C++编程语言中,unistd.h是头文件的名称,它提供对POSIX操作系统API的访问。

unistd.h "是Unix(-like)系统的标准头文件,在Windows上不可用。

<unistd. h>头定义了各种符号常数和类型,并声明了各种函数。

在类Unix系统中,unistd.h定义的接口通常主要由系统调用包装函数组成,如fork、pipe和I/O原语。

像Cygwin和MinGW这样的Unix兼容层也提供它们自己的unistd版本。

事实上,这些系统在提供unistd的同时还提供了翻译库,以Win32函数的形式实现其功能。

例如,在Cygwin中,一个头文件可以在include中找到,它在include/sys中又包含了一个同名的文件。

并非所有的东西都在这里定义,但有些定义是通过引用GNU C标准库头文件来完成的,这些头文件提供了size_t等类型。

因此,unistd.h只是一个通用定义的适应层,它可能是基于已经存在的系统和编译器的特定定义。

这有一个普遍的好处,即不需要定义一套可能同时存在的头文件,而是建立在相同的根基上,由于这个原因,在综合使用的情况下会引起更少的关注。

更多详情请查阅opengroup.。

unistd.h头文件中包含了Unix使用的POSIX版本和X/open版本的信息:

Name

Macro

Standard

POSIX.1-1988

_POSIX_VERSION = 198808L

POSIX.1-1990

_POSIX_VERSION = 199009L

ISO/IEC 9945-1:1990

POSIX.2

_POSIX2_C_VERSION = 199209L

ISO/IEC 9945-2:1993

POSIX.1b-1993

_POSIX_VERSION = 199309L

IEEE 1003.1b-1993

POSIX.1-1996

_POSIX_VERSION = 199506L

IEEE 1003.1-1996

POSIX.1-2001

_POSIX_VERSION = 200112L

IEEE 1003.1-2001

POSIX.1-2008

_POSIX_VERSION = 200809L

IEEE 1003.1-2008

XPG3

_XOPEN_VERSION = 3

X/Open Portability Guide 3 (1989)

XPG4

_XOPEN_VERSION = 4

X/Open Portability Guide 4 (1992)

SUS

_XOPEN_VERSION = 4 && _XOPEN_UNIX

X/Open Single UNIX Specification (UNIX95)

SUSv2

_XOPEN_VERSION = 500

X/Open Single UNIX Specification, Version 2 (UNIX98)

SUSv3

_XOPEN_VERSION = 600

Open Group Single UNIX Specification, Version 3 (UNIX03)

SUSv4

_XOPEN_VERSION = 700

Open Group Single UNIX Specification, Version 4

通过引用unistd.h头文件,我们可以查阅Unix支持的POSIX标准版本:

  1. posix.c
  2. #include <unistd.h>
  3. #include <stdio.h>
  4. int main()
  5. {
  6.   printf("POSIX Version:%%ld. ", _POSIX_VERSION);
  7.   printf("POSIX2 Version:%%ld. ", _POSIX2_C_VERSION );
  8.   printf("X/Open Version:%%d. ", _XOPEN_VERSION);
  9.   return 0;
  10. }
  11. $ gcc -o posix posix.cpp
  12. $ ./posix
  13. POSIX Version:200809.
  14. POSIX2 Version:200809.
  15. X/Open Version:700.

X/Open可移植性指南是一个UNIX系统的标准,最初由X/Open有限公司出版。它以AT&T System V接口定义为基础,比POSIX的范围更广,后者只关注直接的操作系统接口。

参考:

https://www.youtube.com/watch?v=n-Hyqju4LTs

Pre-defined Compiler Macros / Wiki / Standards

推荐阅读