「man3command」と「mancommand」の違いは何ですか?
ウィキ( http://en.wikipedia.org/wiki/Man_page )で、manページのセクション3でman3がLinuxで使用されていることを読みました。また、セクション3ではライブラリ関数について説明し、特にC標準ライブラリについて説明します。
私は「man3ls」を試し、これを手に入れました:
No entry for ls in section 3 of the manual
Man 3をいつ使用するのか、manをいつ使用するのか、それらは異なる目的を果たしますか?
ありがとう。
_man 3 ls
_は、マニュアルのセクション3にあるls
のマニュアルページのみを表示します。セクション3では、ライブラリ関数について説明します。 ls
という名前のライブラリ関数が(おそらく)ないため、何も見つかりません。
セクション番号のないman
コマンドは、覚えていない事前定義された順序でセクションを検索しますが、1から始まる番号順に近い可能性があります。したがって、_man ls
_はセクション1のls
manページを検索します。これはユーザーコマンドをカバーしています。
(私のUbuntuシステムの)セクションは次のとおりです。
_ 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]
_
セクションを指定すると、複数のセクションに同じ名前で存在するものに役立ちます。たとえば、_man printf
_は、セクション1のprintf
ユーザーコマンドのマニュアルページを表示します。 printf
関数のマニュアルページを表示するには、_man 3 printf
_を使用します。これらのマニュアルページは、それぞれprintf(1)
およびprintf(3)
と呼ばれることがよくあります。
窃盗abernertの回答 から借用すると、同じ名前のシステムコール(セクション2)またはライブラリコール(セクション3)のラッパーであるユーザーコマンド(セクション1)がよく見られます。 chown
とchmod
はこの良い例です。
あなたの質問が言うように、セクション3はC標準ライブラリをカバーするライブラリ関数のためのものです。 C標準ライブラリにはls
関数がないため、そのマンページを要求しても何もありません。
なぜあなたが混乱するのか分かります。多くの場合、CまたはPOSIX関数の一部を単純なコマンドライン実行可能ファイルにまとめるだけのツールがあります。たとえば、chmod
ツール(セクション1)は基本的に引数を解析し、各ファイルでchmod
POSIX関数(セクション2)を呼び出します。したがって、man 1 chmod
と入力してツールのドキュメントを取得し、man 2 chmod
と入力してツールが使用するライブラリ関数のドキュメントを取得できます。 man chmod
と入力すると、セクション2よりもセクション1が選択されるため、ツールを入手できます。
しかし、これはそうではありません常に本当です。たとえば、ls
が使用する主な関数はおそらくreaddir
です。したがって、man 1 ls
でツールを検索し、man 3 readdir
で関数を検索できます。この場合、man readdir
はおそらくman 3 readdir
と同じことを行います。これは、同じ名前の優先度の高いセクションには何もないためです。
一部のページは、manのさまざまなエントリに存在します。次に、特定のセクションに到達するために、表示したいセクションを使用することがよくあります。たとえば、whatis find
を参照してください。 3つの異なるページが参照されます。括弧内に出力される各セクションIDを使用してみてください。
時折、manページを読んでいるとき、またはman -kを使用して特定のページを検索しているときに、同じ名前の2つのページが表示されることがありますが、ライブラリは異なります。
[mini-nevie:~] nevinwilliams% man -k route
route(4) - kernel packet forwarding database
route(8) - manually manipulate the routing tables
次に、各manページを読むには、次のようにします。
man 4 route
最初を読むために、そして
man 8 route
2番目を読む。