私は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)はどこにあるのですか?
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
マンページのセクションは、マンページ自体で説明されています。入る 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で説明します。
この理由をさらに明確にするために、マンページはセクション2にあります。これは、システムコール(多かれ少なかれ、Cライブラリではなくカーネルの一部として直接実装される)であるためです。
この違いは、特にライブラリ関数になった古いシステムコール(クローンのラッパーになったにもかかわらず、セクション2にフォークがあります)の場合は、ある程度わかっていない限り、いくぶん恣意的に見えることがあります。一般的に、最初にセクション3を調べ、それが見つからない場合、または関連性がないと思われる場合は、セクション2を試してください。また、セクション2の一部の関数は、通常のプログラム(getdents、gettidなど)から呼び出されることを想定していない、内部または廃止されたLinux固有の関数です。
また、manpages-posix-devパッケージをインストールして、Linux固有の情報を含めるのではなく、移植性のある観点から書かれた一連のマンページを取得することもできます。このパッケージでは、C関数用に提供されているすべてのマンページがセクション3pにあります。
特定のマンページがどのセクションかわからない場合は、-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.
この状況では、次のいずれかのコマンドを使用して、このマンページ名を持つすべての使用可能なページのリスト全体を表示すると便利です。
$ 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