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

16

Estou usando o debian8 (jessie) e fui ler a manpage do open. 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á o manual do programador (man 3) para abrir?

    
por j0h 26.05.2015 / 14:18

5 respostas

18

Você deseja man 2 open para a interface da biblioteca C, não man 3 open . Na verdade, é em manpages-dev (não manpage-dev ). man 3 open fornece 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
    
por 26.05.2015 / 14:56
14

As seções da página do manual são descritas nas próprias páginas manpages. Digite man man em 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, onde a seção 3 abrange as rotinas da biblioteca. Rotinas de biblioteca que são simplesmente wrappers para chamadas de sistema também são descritas na seção 2.

    
por 26.05.2015 / 14:40
10

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

Essa distinção pode parecer um pouco arbitrária, especialmente com chamadas de sistema mais antigas que agora são funções de biblioteca (fork ainda está na seção 2, embora agora seja um wrapper para clone), a menos que você já saiba disso. Em geral, analise a seção 3 primeiro e, em seguida, tente a seção 2, caso não consiga encontrá-la ou pareça que ela não seja relevante. Além disso, algumas das funções na seção 2 são funções específicas do Linux internas ou obsoletas 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 que é escrito 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.

    
por 26.05.2015 / 16:05
4

Quando não tenho certeza em qual seção uma determinada página do manual é, eu 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 manpage 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.
    
por 27.05.2015 / 09:07
3

Nesta situação, é útil ver a lista completa de todas as páginas disponíveis com este nome de página manpage 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, assim, identifique as necessidades:

$ man -a open
    
por 27.05.2015 / 12:54