Где управляющая страница программиста для открытой функции C?

Я использую debian8 (jessie), и я пошел, чтобы найти прочитанную manpage для open. вместо этого я получил предупреждение:

$ man 3 open No manual entry for open in section 3 See 'man 7 undocumented' for help when manual pages are not available. 

У меня установлен пакет manpage-dev, так где же программа для программистов (man 3) для открытия?

Вы хотите, чтобы man 2 open для интерфейса библиотеки C, а не для man 3 open . Это действительно в manpages-dev (а не manpage-dev ). man 3 open дает страницу руководства Perl.

 # Show the corresponding source groff file man -w 2 open /usr/share/man/man2/open.2.gz # Show which package this file belongs to dpkg -S /usr/share/man/man2/open.2.gz manpages-dev: /usr/share/man/man2/open.2.gz # Or use dlocate to show which package this file belongs to dlocate /usr/share/man/man2/open.2.gz manpages-dev: /usr/share/man/man2/open.2.gz 

Секции manpage описаны в самих файлах. Введите man man в сеанс оболочки, чтобы просмотреть различные разделы и общий контент:

  1 Executable programs or shell commands 2 System calls (functions provided by the kernel) 3 Library calls (functions within program libraries) 4 Special files (usually found in /dev) 5 File formats and conventions eg /etc/passwd 6 Games 7 Miscellaneous (including macro packages and conventions), eg man(7), groff(7) 8 System administration commands (usually only for root) 9 Kernel routines [Non standard] 

Раздел 2 описывает системные вызовы, где раздел 3 охватывает библиотечные процедуры. Библиотечные процедуры, которые являются просто оболочками для системных вызовов, описаны также в разделе 2.

Чтобы пояснить причину этого, manpage находится в разделе 2, потому что это системный вызов (реализованный более или менее непосредственно как часть ядра, а не библиотека C).

Это различие может показаться несколько произвольным, особенно со старыми системными вызовами, которые теперь являются библиотечными функциями (fork все еще находится в разделе 2, даже если он теперь является оберткой для клона), если вы уже не знаете об этом. В общем, сначала просмотрите раздел 3, затем попробуйте раздел 2, если вы не можете его найти или похоже, что это может быть не актуально. Кроме того, некоторые из функций в разделе 2 являются внутренними или устаревшими функциями, специфичными для Linux, которые не должны вызываться обычными программами (например, getdents, gettid).

Вы также можете установить пакет manpages-posix-dev, чтобы получить набор manpages, написанный с переносимой перспективы, а не содержащий информацию, специфичную для Linux. В этом пакете все команды, предусмотренные для функций C, приведены в разделе 3p.

Когда я не уверен в каком разделе какой-то man-страницы, я использую параметр -a.

  -a, --all By default, man will exit after displaying the most suitable manual page it finds. Using this option forces man to display all the manual pages with names that match the search criteria. 

Из примера в man-странице для человека:

  man -a intro Display, in succession, all of the available intro manual pages contained within the manual. It is possible to quit between successive displays or skip any of them. 

В этой ситуации полезно увидеть весь список всех доступных страниц с этим именем manpage, используя одну из команд:

 $ man -k ^open$ $ apropos -r ^open$ $ man -f open $ whatis open 

Результат будет таким же:

 open (1) - start a program on a new virtual terminal (VT). open (2) - open and possibly create a file or device 

Или просмотрите содержимое всех существующих файлов и, следовательно, укажите требуемые:

 $ man -a open