Wo befindet sich die Manpage des Programmierers für die offene C-Funktion?


16

Ich benutze debian8 (jessie) und habe die Manpage zum öffnen gelesen. Stattdessen bekam ich eine Warnung:

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

Ich habe das Manpage-Dev-Paket installiert. Wo ist die Manpage des Programmierers (man 3) geöffnet?


1
Sie können auch aproposoder man --names-onlymit einem von --regexoder verwenden --wildcard. Sehen man man.
ein Lebenslauf

In C openist es keine Funktion, sondern ein Systemaufruf. Das ist ein pedantischer Unterschied, aber die Relevanz ist, dass Systemaufrufe in Abschnitt 2 und Bibliotheksfunktionen in Abschnitt 3 enthalten sind.
mpez0

Antworten:


18

Sie möchten man 2 openfür die C-Bibliotheksschnittstelle, nicht man 3 open. Es ist in der Tat in manpages-dev(nicht manpage-dev). man 3 opengibt eine Perl-Handbuchseite.

# 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

Die Hilfeseitenabschnitte werden in den Hilfeseiten selbst beschrieben. Nehmen Sie man manan einer Shell-Sitzung teil, um die verschiedenen Abschnitte und den allgemeinen Inhalt anzuzeigen:

   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]

Abschnitt 2 beschreibt Systemaufrufe, wobei Abschnitt 3 Bibliotheksroutinen behandelt. Bibliotheksroutinen, die lediglich Wrapper für Systemaufrufe sind, werden ebenfalls in Abschnitt 2 beschrieben.


10

Um den Grund dafür näher zu erläutern, befindet sich die Manpage in Abschnitt 2, da es sich um einen Systemaufruf handelt (der mehr oder weniger direkt als Teil des Kernels und nicht der C-Bibliothek implementiert ist).

Diese Unterscheidung kann etwas willkürlich erscheinen, insbesondere bei älteren Systemaufrufen, die jetzt Bibliotheksfunktionen sind (Fork befindet sich noch in Abschnitt 2, obwohl es sich jetzt um einen Wrapper für Klone handelt), es sei denn, Sie wissen es bereits. Schauen Sie zuerst in Abschnitt 3 nach und versuchen Sie dann Abschnitt 2, wenn Sie ihn nicht finden können oder es so aussieht, als wäre er möglicherweise nicht relevant. Außerdem sind einige der Funktionen in Abschnitt 2 interne oder veraltete linuxspezifische Funktionen, die von normalen Programmen nicht aufgerufen werden sollen (z. B. getdents, gettid).

Sie können auch das Paket manpages-posix-dev installieren, um eine Reihe von Manpages zu erhalten, die aus einer portablen Perspektive geschrieben wurden, anstatt linuxspezifische Informationen zu enthalten. In diesem Paket befinden sich alle für C-Funktionen bereitgestellten Hilfeseiten in Abschnitt 3p.


4

Wenn ich nicht sicher bin, in welchem ​​Abschnitt sich eine bestimmte Manpage befindet, verwende ich die 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.

Aus dem Beispiel in der Manpage für 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 dieser Situation ist es hilfreich, mit einem der folgenden Befehle die gesamte Liste aller verfügbaren Seiten mit diesem Manpage-Namen anzuzeigen:

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

Das Ergebnis wird dasselbe sein:

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

Oder sehen Sie sich den Inhalt aller vorhandenen Hilfeseiten an und identifizieren Sie die erforderlichen:

$ man -a open
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.