2015-05-23 3 views
2

Я приведу пример из The GNU C Library документации:Что входит в библиотеку C Standard?

13.1 Открытие и закрытие файлов

В этом разделе описываются примитивы для открытия и закрытия файлов с использованием дескрипторов файлов. Функции open и creat объявляются в заголовочном файле fcntl.h, а close объявлен в unistd.h.

Мой вопрос:

Может unistd.h и fcntl.h рассматривать как Standard C? Насколько я знаю, они должны быть частью Posix standard?

Можно ли сказать C Стандартная библиотека = функции Posix + C API? Я запутался, потому что Wikipedia page for C Standard Library не включает unistd.h, но в библиотеку библиотеки GNU C входит?

+1

В стандарте C есть раздел о стандартной библиотеке C. Ознакомьтесь с http://port70.net/~nsz/c/c11/n1570.pdf для стандарта C11. – Banex

+3

Нет, 'unistd.h' и' fcntl.h' и т. Д. Не являются частью стандарта C. –

+0

@YuHao Почему они включены в документацию библиотеки GNU C? –

ответ

3

Насколько я вижу, в C11 стандартом нет unistd.h и fcntl.h. Так что, строго говоря, они не являются частью стандарта C.

Когда дело доходит до реализации стороны, GNU C library (glibc) является одним из них. На странице вики

glibc обеспечивает функциональные возможности, необходимые спецификации Single UNIX, POSIX (1c, 1d, и 1к) и некоторые функциональные возможности, требуемые ISO C11, ISO C99, Berkeley Unix (BSD) интерфейсы, (SVID) и X/Open Portability Guide (XPG), выпуск 4.2, со всеми расширениями, совместимыми с системами XSI (X/Open System Interface), а также со всеми расширениями X/Open UNIX.

Кроме того, glibc также предоставляет расширения, которые были сочтены полезными или необходимыми при разработке GNU.

Таким образом, в качестве части стандарта POSIX они доступны в glibc.

Ссылка: Проверить C11 стандарт draft version here.

+0

Можете ли вы дать ссылку, пожалуйста, так что я могу проверить ее также? –

+0

Почему библиотека GNU C включает их в документацию? –

+0

@KorayTugay обновил мой ответ. :) –

3

Нет, unistd.h, fcntl.h и т.д., не стандартный C.

В общем, стандартный C не включает в себя функции, которые имеют дело с манипуляцией файла низкого уровня. Например, fopen, fread и fwrite являются частью стандартной библиотеки C. Хотя функции POSIX open, read, write не являются стандартными C.

+0

Имеет ли Unix свою собственную реализацию posix или должна ли библиотека c реализовать ее? (например, gnu c library ..) –

+0

@KorayTugay Любая библиотека C для Unix должна поддерживать POSIX, если это ваш вопрос. –

+2

@KorayTugay, POSIX (современная форма Unix) - это спецификация интерфейса, а не реализация. Linux как ОС - это реализация POSIX. Как реализация собирает различные функции по своему усмотрению. В большинстве дистрибутивов Linux используется glibc как реализация библиотеки C (amd POSIX), но некоторые нет. Другой реализацией одних и тех же интерфейсов является, например, musl. –

Смежные вопросы