C标准库中包含哪些内容?

时间:2015-05-23 15:05:30

标签: c linux posix standards language-lawyer

我将从The GNU C Library文档中提供一个示例:

  

13.1打开和关闭文件

     

本节介绍打开和关闭文件的基元   使用文件描述符。 open和creat函数在中声明   头文件fcntl.h,而close在unistd.h中声明。

我的问题是:

可以将unistd.hfcntl.h视为标准C吗?据我所知,他们应该成为Posix standard的一部分?

我们可以说C标准库= Posix函数+ C API吗?我感到困惑,因为Wikipedia page for C Standard Library不包含unistd.h,但GNU C Library文档包含它?

2 个答案:

答案 0 :(得分:3)

据我所知,在C11标准中,没有unistd.hfcntl.h。因此,严格来说,它们不属于C标准。

对于实现部分,GNU C libraryglibc)就是其中之一。来自维基页面

  

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.hfcntl.h等不是标准C。

通常,标准C不包括处理低级文件操作的函数。例如,fopenfreadfwrite是标准C库的一部分。虽然POSIX openreadwrite函数不是标准C。