Разница между стандартной библиотекой C и библиотекой C POSIX
Я немного смущен "c standard lib" и "C POSIX lib", потому что я обнаружил, что многие заголовочные файлы, определенные в "C POSIX lib", также являются частью "c standard lib".
Итак, я предполагаю, что "c standard lib"-это lib, определенный организацией ANSI C, и есть разные реализации на разных платформах (Win32/Unix-like), а "c POSIX lib" - это просто реализация для "C standard lib" на Unix-подобных ОС, верно?
но "c POSIX lib" содержит некоторые заголовки не указано в "C standard lib", например <sys/types.h>
, <sys/wait.h>
и <pthread.h>
.
взять <pthread.h>
в качестве примера я предполагаю, что его аналог "c standard lib" -<threads.h>
, затем, если я хочу написать многопоточную программу на Linux, какой файл заголовка я должен включить,<pthread.h>
или <threads.h>
?
3 ответов
POSIX является надмножеством стандартной библиотеки C, и важно отметить, что она отсылает к нему. Если C и POSIX когда-либо конфликтуют, c выигрывает.
сокеты, файловые дескрипторы, общая память и т. д. все они являются частью POSIX,но не существуют в библиотеке C.
pthread.h
используется для потоков POSIX и threads.h
является новым заголовком Для C11 и является частью библиотеки C. Возможно, pthreads будут осуждены когда-нибудь в будущем в пользу C, однако вы, вероятно пока не могу рассчитывать на широкое развертывание C11. Поэтому, если вы хотите переносимость, вы должны предпочесть pthreads на данный момент. Если переносимость не является проблемой, и у вас есть потоки C11, вы, вероятно, должны использовать их.
C POSIX библиотека-это спецификация стандартной библиотеки C для систем POSIX. Он был разработан одновременно со стандартом ANSI C. Были предприняты некоторые усилия, чтобы сделать POSIX совместимым со стандартом C; POSIX включает дополнительные функции к тем, которые введены в стандарт C.
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?