我将从The GNU C Library文档中提供一个示例:
13.1打开和关闭文件
本节介绍打开和关闭文件的基元 使用文件描述符。 open和creat函数在中声明 头文件fcntl.h,而close在unistd.h中声明。
我的问题是:
可以将unistd.h
和fcntl.h
视为标准C吗?据我所知,他们应该成为Posix standard的一部分?
我们可以说C标准库= Posix函数+ C API吗?我感到困惑,因为Wikipedia page for C Standard Library不包含unistd.h
,但GNU C Library文档包含它?
答案 0 :(得分:3)
据我所知,在C11
标准中,没有unistd.h
和fcntl.h
。因此,严格来说,它们不属于C
标准。
对于实现部分,GNU C library(glibc
)就是其中之一。来自维基页面
glibc
提供Single UNIX Specification,POSIX(1c,1d和1j)所需的功能以及ISO C11,ISO C99,Berkeley Unix(BSD)接口,System V所需的一些功能接口定义(SVID)和X / Open可移植性指南(XPG),第4.2版,所有扩展都与XSI(X / Open System Interface)兼容系统以及所有X / Open UNIX扩展通用。此外,
glibc
还提供了在开发GNU时被视为有用或必要的扩展。
因此,作为POSIX标准的一部分,它们可以在glibc
中找到。
参考:检查C11
标准draft version here。
答案 1 :(得分:3)
不,unistd.h
,fcntl.h
等不是标准C。
通常,标准C不包括处理低级文件操作的函数。例如,fopen
,fread
和fwrite
是标准C库的一部分。虽然POSIX open
,read
,write
函数不是标准C。