web-dev-qa-db-ja.com

オープンC関数のプログラマのマンページはどこにありますか?

私はdebian8(jessie)を使用していて、openのマンページを読んでみました。代わりに私は警告を受けました:

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

Manpage-devパッケージをインストールしているので、プログラマーのマンページ(man 3)はどこにあるのですか?

16
j0h

Cライブラリインターフェイスにはman 2 openではなくman 3 openが必要です。確かにmanpages-devにあります(manpage-devではありません)。 man 3 openは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
18
Faheem Mitha

マンページのセクションは、マンページ自体で説明されています。入る man manシェルセッションで、さまざまなセクションと一般的なコンテンツを表示します。

   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]

セクション2では、システムコールについて説明し、セクション3ではライブラリルーチンについて説明します。システムコールの単なるラッパーであるライブラリルーチンについても、セクション2で説明します。

14
JRFerguson

この理由をさらに明確にするために、マンページはセクション2にあります。これは、システムコール(多かれ少なかれ、Cライブラリではなくカーネルの一部として直接実装される)であるためです。

この違いは、特にライブラリ関数になった古いシステムコール(クローンのラッパーになったにもかかわらず、セクション2にフォークがあります)の場合は、ある程度わかっていない限り、いくぶん恣意的に見えることがあります。一般的に、最初にセクション3を調べ、それが見つからない場合、または関連性がないと思われる場合は、セクション2を試してください。また、セクション2の一部の関数は、通常のプログラム(getdents、gettidなど)から呼び出されることを想定していない、内部または廃止されたLinux固有の関数です。

また、manpages-posix-devパッケージをインストールして、Linux固有の情報を含めるのではなく、移植性のある観点から書かれた一連のマンページを取得することもできます。このパッケージでは、C関数用に提供されているすべてのマンページがセクション3pにあります。

10
Random832

特定のマンページがどのセクションかわからない場合は、-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.

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.
4
Ulric Eriksson

この状況では、次のいずれかのコマンドを使用して、このマンページ名を持つすべての使用可能なページのリスト全体を表示すると便利です。

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

結果は同じになります:

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

または、既存のすべてのマンページの内容を表示して、必要なものを特定します。

$ man -a open
3
Apostle