Dov'è la manpage del programmatore per la funzione C aperta?


16

Sto usando debian8 (jessie) e sono andato a cercare leggere la manpage per open. invece ho ricevuto un avviso:

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

Ho installato il pacchetto manpage-dev, quindi dov'è la manpage dei programmatori (man 3) per open?


1
Puoi anche usare apropos, o man --names-onlycon uno di --regexo --wildcard. Vedere man man.
un CVn

In C, opennon è una funzione, è una chiamata di sistema. Questa è una differenza pedante, ma la rilevanza qui è che le chiamate di sistema sono nella sezione 2, mentre le funzioni di libreria sono nella sezione 3.
mpez0

Risposte:


18

Volete man 2 openper l'interfaccia della libreria C, no man 3 open. È davvero in manpages-dev(non manpage-dev). man 3 opendà una pagina di manuale 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

Le sezioni della manpage sono descritte nelle stesse manpage. Entra man manin una sessione di shell per vedere le varie sezioni e il contenuto generale:

   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 sezione 2 descrive le chiamate di sistema in cui la sezione 3 copre le routine di libreria. Le routine di libreria che sono semplicemente wrapper per le chiamate di sistema sono descritte anche nella sezione 2.


10

Giusto per chiarire ulteriormente la ragione di ciò, la manpage è nella sezione 2 perché è una chiamata di sistema (implementata più o meno direttamente come parte del kernel, piuttosto che nella libreria C).

Questa distinzione può sembrare in qualche modo arbitraria, specialmente con le chiamate di sistema più vecchie che ora sono funzioni di libreria (fork è ancora nella sezione 2 anche se ora è un wrapper per il clone), a meno che tu non lo sappia già. In generale, guarda prima nella sezione 3, quindi prova la sezione 2 se non riesci a trovarla o sembra che potrebbe non essere pertinente. Inoltre, alcune delle funzioni della sezione 2 sono funzioni interne o obsolete specifiche per Linux che non dovrebbero essere chiamate da programmi normali (ad esempio getdents, gettid).

Puoi anche installare il pacchetto manpages-posix-dev per ottenere un set di manpage che è scritto da una prospettiva portatile piuttosto che contenere informazioni specifiche di Linux. In questo pacchetto, tutte le manpage fornite per le funzioni C sono nella sezione 3p.


4

Quando non sono sicuro di quale sezione sia una determinata manpage, utilizzo l'opzione -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.

Dall'esempio nella manpage per 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

In questa situazione, è utile vedere l'intero elenco di tutte le pagine disponibili con questo nome di manpage utilizzando uno dei comandi:

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

Il risultato sarà lo stesso:

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

Oppure visualizza il contenuto di tutte le manpage esistenti e quindi identifica i requisiti richiesti:

$ man -a open
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.