Où se trouve la page de manuel du programmeur pour la fonction C ouverte?


16

J'utilise debian8 (jessie) et je suis allé trouver lire la page de manuel pour open. à la place, j'ai reçu un avertissement:

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

J'ai installé le paquet manpage-dev, alors où est la page de manuel des programmeurs (man 3) pour open?


1
Vous pouvez également utiliser apropos, ou man --names-onlyavec l'un --regexou --wildcard. Tu vois man man.
un CVn

En C, ce openn'est pas une fonction, c'est un appel système. C'est une différence pédante, mais la pertinence ici est que les appels système sont dans la section 2, tandis que les fonctions de bibliothèque sont dans la section 3.
mpez0

Réponses:


18

Vous voulez man 2 openpour l'interface de la bibliothèque C, non man 3 open. C'est en effet manpages-dev(pas manpage-dev). man 3 opendonne une page de manuel 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

Les sections de la page de manuel sont décrites dans les pages de manuel elles-mêmes. Entrez man mandans une session shell pour voir les différentes sections et le contenu général:

   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 section 2 décrit les appels système où la section 3 couvre les routines de bibliothèque. Les routines de bibliothèque qui sont simplement des wrappers pour les appels système sont également décrites dans la section 2.


10

Juste pour clarifier la raison de cela, la page de manuel est dans la section 2 car il s'agit d'un appel système (implémenté plus ou moins directement dans le cadre du noyau, plutôt que de la bibliothèque C).

Cette distinction peut sembler quelque peu arbitraire, en particulier avec les appels système plus anciens qui sont maintenant des fonctions de bibliothèque (fork est toujours dans la section 2 même si c'est maintenant un wrapper pour clone), à ​​moins que vous ne le sachiez déjà. En général, regardez d'abord dans la section 3, puis essayez la section 2 si vous ne le trouvez pas ou s'il semble que ce ne soit pas pertinent. De plus, certaines des fonctions de la section 2 sont des fonctions internes ou obsolètes spécifiques à Linux qui ne sont pas censées être appelées par des programmes normaux (par exemple getdents, gettid).

Vous pouvez également installer le package manpages-posix-dev pour obtenir un ensemble de pages de manuel écrites dans une perspective portable plutôt que contenant des informations spécifiques à Linux. Dans ce paquet, toutes les pages de manuel fournies pour les fonctions C sont dans la section 3p.


4

Lorsque je ne sais pas dans quelle section se trouve une certaine page de manuel, j'utilise l'option -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.

De l'exemple dans la page de manuel pour 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

Dans cette situation, il est utile de voir la liste complète de toutes les pages disponibles avec ce nom de page de manuel en utilisant l'une des commandes:

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

Le résultat sera le même:

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

Ou consultez le contenu de toutes les pages de manuel existantes et identifiez ainsi les éléments requis:

$ man -a open
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.