Onde está a página de manual do programador para a função C aberta?

16

Estou usando o debian8 (jessie) e fui encontrar a página de manual para abrir. em vez disso, recebi um aviso:

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

Eu tenho o pacote manpage-dev instalado, então onde está a página do programador (man 3) aberta?

j0h
fonte
11
Você também pode usar apropos, ou man --names-onlycom um dos --regexou --wildcard. Veja man man.
um CVn
Em C, opennão é uma função, é uma chamada do sistema. Essa é uma diferença pedante, mas a relevância aqui é que chamadas de sistema são na seção 2, enquanto as funções da biblioteca estão na seção 3.
mpez0

Respostas:

18

Você deseja man 2 opena interface da biblioteca C, não man 3 open. É de fato em manpages-dev(não manpage-dev). man 3 openfornece uma página de manual do 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
Faheem Mitha
fonte
14

As seções da página de manual são descritas nas próprias páginas de manual. Entre man manem uma sessão de shell para ver as várias seções e o conteúdo geral:

   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]

A seção 2 descreve as chamadas do sistema em que a seção 3 abrange as rotinas da biblioteca. As rotinas de biblioteca que são simplesmente wrappers para chamadas do sistema também são descritas na seção 2.

JRFerguson
fonte
10

Apenas para esclarecer o motivo disso, a página de manual está na seção 2 porque é uma chamada do sistema (implementada mais ou menos diretamente como parte do kernel, em vez da biblioteca C).

Essa distinção pode parecer um tanto arbitrária, especialmente com chamadas de sistema mais antigas que agora são funções de biblioteca (o fork ainda está na seção 2, embora agora seja um wrapper para clone), a menos que você já o conheça. Em geral, consulte a seção 3 primeiro e tente a seção 2 se não a encontrar ou se parece que não é relevante. Além disso, algumas das funções na seção 2 são internas ou obsoletas, específicas do Linux, que não devem ser chamadas por programas normais (por exemplo, getdents, gettid).

Você também pode instalar o pacote manpages-posix-dev para obter um conjunto de páginas de manual escritas de uma perspectiva portátil, em vez de conter informações específicas do linux. Neste pacote, todas as páginas de manual fornecidas para funções C estão na seção 3p.

Random832
fonte
4

Quando não tenho certeza de qual seção é uma certa página de manual, uso a opção -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.

Do exemplo na página de manual para 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.
Ulric Eriksson
fonte
3

Nessa situação, é útil ver a lista inteira de todas as páginas disponíveis com esse nome de página de manual usando um dos comandos:

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

O resultado será o mesmo:

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

Ou visualize o conteúdo de todas as páginas de manual existentes e identifique assim:

$ man -a open
Apóstolo
fonte