Де розміщено сторінку програміста для відкритої функції C?


16

Я використовую debian8 (jessie) і пішов шукати відкриту сторінку. натомість я отримав попередження:

$ 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)?


1
Ви також можете використовувати aproposабо man --names-onlyз одним з --regexабо --wildcard. Див man man.
CVn

В C - openце не функція, це системний виклик. Це педантична різниця, але актуальність тут полягає в тому, що системні виклики перебувають у розділі 2, а функції бібліотеки - у розділі 3.
mpez0

Відповіді:


18

Ви хочете man 2 openдля інтерфейсу бібліотеки С, а не 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

14

Розділи вручну описані в самих мапажах. Введіть 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), e.g.
       man(7), groff(7)
   8   System administration commands (usually only for root)
   9   Kernel routines [Non standard]

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


10

Просто для уточнення причини цього, розміщення сторінки знаходиться у розділі 2, оскільки це системний виклик (реалізований більш-менш безпосередньо як частина ядра, а не бібліотека C).

Ця відмінність може здатися дещо довільною, особливо це стосується старих системних викликів, які тепер функціонують у бібліотеці (форк все ще знаходиться у розділі 2, хоча він зараз є обгорткою для клону), якщо ви вже цього не знаєте. Загалом, спочатку подивіться у розділ 3, а потім спробуйте розділ 2, якщо ви не можете його знайти чи здається, що він може бути невідповідним. Також деякі функції в розділі 2 - це внутрішні або застарілі функції, характерні для Linux, які не повинні називатися звичайними програмами (наприклад, getdents, gettid).

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


4

Коли я не впевнений, у якому розділі знаходиться певна сторінка, я використовую варіант -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 -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.

3

У цій ситуації корисно переглянути весь список усіх доступних сторінок із цим ім'ям сторінки, використовуючи одну з команд:

$ 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.