web-dev-qa-db-ja.com

manページコマンド:man 3 vs. man

「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をいつ使用するのか、それらは異なる目的を果たしますか?

ありがとう。

3
user2157668

_man 3 ls_は、マニュアルのセクション3にあるlsのマニュアルページのみを表示します。セクション3では、ライブラリ関数について説明します。 lsという名前のライブラリ関数が(おそらく)ないため、何も見つかりません。

セクション番号のないmanコマンドは、覚えていない事前定義された順序でセクションを検索しますが、1から始まる番号順に近い可能性があります。したがって、_man ls_はセクション1のlsmanページを検索します。これはユーザーコマンドをカバーしています。

(私の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)がよく見られます。 chownchmodはこの良い例です。

11
Keith Thompson

あなたの質問が言うように、セクション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と同じことを行います。これは、同じ名前の優先度の高いセクションには何もないためです。

3
abarnert

一部のページは、manのさまざまなエントリに存在します。次に、特定のセクションに到達するために、表示したいセクションを使用することがよくあります。たとえば、whatis findを参照してください。 3つの異なるページが参照されます。括弧内に出力される各セクションIDを使用してみてください。

1
Adrian

時折、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番目を読む。

0
Nevin Williams