Gdzie jest strona programisty dla otwartej funkcji C?

16

Korzystam z debian8 (jessie) i poszedłem znaleźć stronę podręcznika otwartego. zamiast tego dostałem ostrzeżenie:

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

Mam zainstalowany pakiet manpage-dev, więc gdzie jest programista manpage (man 3) dla open?

j0h
źródło
1
Możesz także użyć aproposlub man --names-onlyz jednym z --regexlub --wildcard. Zobaczyć man man.
CVn
W C opennie jest funkcją, to wywołanie systemowe. To pedantyczna różnica, ale istotne jest to, że wywołania systemowe znajdują się w sekcji 2, a funkcje biblioteczne w sekcji 3.
mpez0

Odpowiedzi:

18

Chcesz man 2 openinterfejsu biblioteki C. Nie man 3 open. Rzeczywiście jest w manpages-dev(nie manpage-dev). man 3 opendaje stronę podręcznika Perla.

# 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
Faheem Mitha
źródło
14

Sekcje strony man zostały opisane w samych stronach man. Wejdź man manw sesję powłoki, aby zobaczyć różne sekcje i ogólną treść:

   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]

Sekcja 2 opisuje wywołania systemowe, podczas gdy sekcja 3 obejmuje procedury biblioteczne. Procedury biblioteczne, które są po prostu opakowaniem wywołań systemowych, opisano również w sekcji 2.

JRFerguson
źródło
10

Aby wyjaśnić powód tego, strona podręcznika znajduje się w sekcji 2, ponieważ jest to wywołanie systemowe (zaimplementowane mniej więcej bezpośrednio jako część jądra, a nie biblioteka C).

To rozróżnienie może wydawać się nieco arbitralne, szczególnie w przypadku starszych wywołań systemowych, które są teraz funkcjami bibliotecznymi (fork nadal znajduje się w sekcji 2, mimo że jest teraz opakowaniem do klonowania), chyba że już go znasz. Ogólnie rzecz biorąc, najpierw spójrz do sekcji 3, a następnie wypróbuj sekcję 2, jeśli nie możesz jej znaleźć lub wygląda na to, że może nie być odpowiednia. Ponadto niektóre funkcje w sekcji 2 są wewnętrznymi lub przestarzałymi funkcjami specyficznymi dla systemu Linux, które nie powinny być wywoływane przez normalne programy (np. Getdents, gettid).

Możesz także zainstalować pakiet manpages-posix-dev, aby uzyskać zestaw stron napisany z przenośnej perspektywy, a nie zawierający informacje specyficzne dla systemu Linux. W tym pakiecie wszystkie strony podręczne dla funkcji C znajdują się w sekcji 3p.

Losowo 832
źródło
4

Kiedy nie jestem pewien, w której sekcji jest określona strona podręczna, używam opcji -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.

Z przykładu na stronie man dla człowieka:

   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.
Ulric Eriksson
źródło
3

W tej sytuacji przydatne jest wyświetlenie całej listy wszystkich dostępnych stron o tej nazwie strony za pomocą jednego z poleceń:

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

Wynik będzie taki sam:

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

Lub przejrzyj zawartość wszystkich istniejących stron podręcznika, aby zidentyfikować wymagane:

$ man -a open
Apostoł
źródło