C标准库和C POSIX库的区别

eqoofvh9  于 2023-06-21  发布在  其他
关注(0)|答案(3)|浏览(271)

我对“C标准库”和“C POSIX库”有点困惑,因为我发现,“C POSIX库”中定义的许多头文件也是“C标准库”的一部分。
所以,我假设,“C标准库”是ANSI C组织定义的库,在不同的平台上有不同的实现(Win32/Unix-like),而“C POSIX库”只是“C标准库”在Unix-like操作系统上的实现,对吗?
但是“C POSIX lib”包含了一些在“C标准lib”中没有指定的头文件,例如<sys/types.h><sys/wait.h><pthread.h>
<pthread.h>为例,我假设它的“C标准库”对应物是<threads.h>,那么如果我想在Linux上编写一个多线程程序,我应该包括哪个头文件,<pthread.h>还是<threads.h>

1sbrub3j

1sbrub3j1#

POSIX是标准C库的超集,需要注意的是,它遵从标准C库。如果C和POSIX发生冲突,C将获胜。
套接字、文件描述符、共享内存等都是POSIX的一部分,但不存在于C库中。
pthread.h用于POSIX线程,threads.h是C11的新头文件,是C库的一部分。也许pthreads在将来的某个时候会被弃用,而C线程会被弃用,但是你可能还不能指望C11会得到广泛的部署。因此,如果你想要可移植性,你现在应该更喜欢pthreads。如果可移植性不是问题,并且您有可用的C11线程,那么您可能应该使用这些线程。

rjee0c15

rjee0c152#

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是什么?

dauxcl2d

dauxcl2d3#

ANSI C还活着,我想:ANSI C是由ISO C,Cxx继承和扩展的。POSIX已经完全服从ANSI C。
可以在Windows、类Unix、嵌入式设备上轻松编写ANSI C语言;但是Cxx或POSIX可能有问题。

相关问题