¿Dónde está la página de manual del programador para la función C abierta?


16

Estoy usando debian8 (jessie) y fui a buscar leer la página de manual para abrir. en cambio recibí una advertencia:

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

Tengo instalado el paquete manpage-dev, entonces, ¿dónde está abierta la página de manual de los programadores (man 3)?


1
También puede usar apropos, o man --names-onlycon uno de --regexo --wildcard. Ver man man.
un CVn

En C, openno es una función, es una llamada al sistema. Esa es una diferencia pedante, pero la relevancia aquí es que las llamadas al sistema están en la sección 2, mientras que las funciones de la biblioteca están en la sección 3.
mpez0

Respuestas:


18

Desea man 2 openla interfaz de la biblioteca C, no man 3 open. De hecho está en manpages-dev(no manpage-dev). man 3 openda una página de manual de 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

Las secciones de la página de manual se describen en las propias páginas de manual. Ingrese man manen una sesión de shell para ver las diferentes secciones y contenido general:

   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]

La sección 2 describe las llamadas al sistema donde la sección 3 cubre las rutinas de la biblioteca. Las rutinas de la biblioteca que son simplemente envoltorios para llamadas al sistema también se describen en la sección 2.


10

Solo para aclarar la razón de esto, la página de manual está en la sección 2 porque es una llamada al sistema (implementada más o menos directamente como parte del núcleo, en lugar de la biblioteca C).

Esta distinción puede parecer algo arbitraria, especialmente con llamadas a sistemas más antiguos que ahora son funciones de biblioteca (fork todavía está en la sección 2, aunque ahora es un contenedor para clonar), a menos que ya lo sepa. En general, primero mire la sección 3, luego intente la sección 2 si no puede encontrarla o si parece que no es relevante. Además, algunas de las funciones de la sección 2 son funciones internas u obsoletas específicas de Linux a las que los programas normales no deben llamar (por ejemplo, getdents, gettid).

También puede instalar el paquete manpages-posix-dev para obtener un conjunto de páginas de manual escritas desde una perspectiva portátil en lugar de contener información específica de Linux. En este paquete, todas las páginas de manual proporcionadas para las funciones C se encuentran en la sección 3p.


4

Cuando no estoy seguro de en qué sección se encuentra cierta página de manual, uso la opción -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.

Del ejemplo en la 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.

3

En esta situación, es útil ver la lista completa de todas las páginas disponibles con este nombre de página de manual mediante uno de los comandos:

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

El resultado será el mismo:

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

O vea el contenido de todas las páginas de manual existentes e identifique así lo requerido:

$ man -a open
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.