C标准库与C POSIX库的区别

Alc*_*ott 63 c posix standard-library

我对"C标准库"和"C POSIX库"感到有些困惑,因为我发现"C POSIX lib"中定义的许多头文件也是"C标准库"的一部分.

因此,我认为,"C标准库"是由ANSI C组织定义的库,并且在不同平台(Win32/Unix-like)上有不同的实现,而"C POSIX lib"只是"C标准"的实现lib"在类Unix操作系统上,对吗?

但是"C POSIX LIB"包含了一些头在"C标准库"未指定,如<sys/types.h>,<sys/wait.h><pthread.h>.

<pthread.h>为例,我相信它的"C标准库"对应的是<threads.h>,那么如果我想要写Linux上的多线程程序,这头文件,我应该包括,<pthread.h>还是<threads.h>

Per*_*son 44

POSIX是标准C库的超集,重要的是要注意它遵循它.如果C和POSIX发生冲突,C胜出.

套接字,文件描述符,共享内存等都是POSIX的一部分,但在C库中不存在.

pthread.h用于POSIX线程,threads.h是C11的新标头,是C库的一部分.也许pthreads将来会在某个时候被弃用,而不是C语言,但是你可能不能指望C11进行广泛的部署.因此,如果你想要可移植性,你现在应该更喜欢pthreads.如果可移植性不是问题,并且您有可用的C11线程,那么您应该使用它们.

  • @KorayTugay最好的解决方法是IMO去[POSIX网页](http://pubs.opengroup.org/onlinepubs/9699919799)并搜索[signal.h](http://pubs.opengroup .ORG/onlinepubs/9699919799/basedefs/signal.h.html).它会注意到标头存在于C标准库中,但POSIX扩展到它.扩展名标有"CX".它说你必须添加一个define,但通常扩展是由默认的编译器标志启用的.另一种选择是阅读[C标准](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf). (2认同)

L.p*_*ppt 10

C POSIX库是POSIX系统的C标准库的规范.它与ANSI C标准同时开发.为了使POSIX与标准C兼容,我们做了一些努力; POSIX包含标准C中引入的功能.


Cir*_*四事件 5

POSIX 7 报价

http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap01.html#tag_14_01

1.1 与其他正式标准的关系

我们非常小心地确保本 POSIX.1-2008 卷完全符合以下标准:

ISO C (1999) ISO/IEC 9899:1999,编程语言 - C,包括 ISO/IEC 9899:1999/Cor.1:2001(E),ISO/IEC 9899:1999/Cor.2:2004(E),和 ISO/IEC 9899:1999/Cor.3。

参考 ISO/IEC 9899:1999 标准(以下称为 ISO C 标准)的部分内容来描述本 POSIX.1-2008 卷也规定的要求。本卷 POSIX.1-2008 中包含的一些函数和头文件在 ISO C 标准中有一个版本;在这种情况下,根据需要添加 CX 标记以显示 ISO C 标准的扩展位置(参见代码)。本卷 POSIX.1-2008 与 ISO C 标准之间的任何冲突都是无意的。

我在以下位置列出了一些主要的 API 扩展:我从未真正理解:什么是 POSIX?