Это стандартная функция C? - PullRequest
0 голосов
/ 28 апреля 2019

Чтение о функции popen .

Это в заголовке stdio.h (стандартный заголовок), он возвращает FILE* (стандартная структура ввода-вывода, в отличие от функций Unix из unistd.h), но я не могу найти его ни на одном стандартном справочном веб-сайте C.

Так это стандарт, или это какое-то расширение GCC? Что это?

1 Ответ

2 голосов
/ 28 апреля 2019

Со страницы справочника, на которую вы ссылались:

CONFORMING TO         top
       POSIX.1-2001, POSIX.1-2008.

       The 'e' value for type is a Linux extension.

Это функция, определенная в стандарте POSIX . И значение e для типа является расширением linux.

Является ли стандартная функция C popen?

Нет. popen не является стандартной функцией C, то есть она не определена в C стандарте .

Так это стандарт, или это какое-то расширение GCC? Что это?

Это стандартная функция POSIX. Это не расширение GCC. Это функция.

Тогда почему он находится в stdio.h, а не в unistd.h или как-то еще?

Объявление popen становится видимым после включения stdio.h в POSIX-совместимых системах, потому что так говорит стандарт POSIX. (Почему это не posix/stdio.h или как sys/stdio.h, это в основном по историческим причинам. Каждая система просто использует stdio.h.)

...