맨 페이지 명령 : 맨 3 대 맨 표준 라이브러리를 다루는 라이브러리 함수를

“man 3 command”와 “man command”의 차이점이 무엇인지 궁금합니다.

wiki ( http://en.wikipedia.org/wiki/Man_page )에서 man 3은 Linux에서 매뉴얼 페이지의 섹션 3에서 사용된다는 것을 읽었습니다 . 그리고 섹션 3은 특히 C 표준 라이브러리를 다루는 라이브러리 함수를 참조합니다.

“man 3 ls”를 시도하고 이것을 얻었습니다.

No entry for ls in section 3 of the manual

나는 사람 3을 언제 사용해야하는지, 언제 사람을 사용해야하는지 궁금하고 그들이 다른 목적을 달성합니까?

감사.



답변

man 3 lsls매뉴얼의 섹션 3에 대한 매뉴얼 페이지 만 표시합니다 . 섹션 3은 라이브러리 기능을 다룹니다. 이름이 지정된 라이브러리 함수 ls가 없기 때문에 아무것도 찾을 수 없습니다.

man섹션 번호가없는 명령은 내가 기억하지 않는 미리 정의 된 순서대로 섹션을 검색하지만, 그래서 1부터 숫자 순서에 근접 할 가능성이 높습니다 man ls찾기합니다 ls사용자 명령을 커버 섹션 1의 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]

섹션을 지정하면 둘 이상의 섹션에서 동일한 이름을 가진 항목에 유용 할 수 있습니다. 예를 들어, 섹션 1 man printfprintf사용자 명령에 대한 매뉴얼 페이지가 표시됩니다 . printf함수 의 매뉴얼 페이지를 보려면을 사용하십시오 man 3 printf. 이 매뉴얼 페이지가 각각 printf(1)및 로 표시되는 경우가 종종 있습니다 printf(3).

도용 abernert의 답변 에서 차용 하는 경우, 동일한 이름을 가진 시스템 호출 (섹션 2) 또는 라이브러리 호출 (섹션 3)의 래퍼 인 사용자 명령 (섹션 1)을 보는 것이 일반적입니다. chown그리고 chmod이것의 좋은 예입니다.


답변

귀하의 질문에 따르면, 섹션 3은 C 표준 라이브러리를 다루는 라이브러리 기능에 대한 것입니다. lsC 표준 라이브러리 에는 기능 이 없으므로 맨 페이지를 요청할 때 아무것도 없습니다.

왜 당신이 혼란 스러울 지 알 수 있습니다. 대부분의 경우 간단한 명령 줄 실행 파일에서 일부 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. 세 가지 다른 페이지가 참조됩니다. 출력하는 각 섹션 ID를 괄호 안에 사용하십시오.


답변

경우에 따라 매뉴얼 페이지를 읽거나 man -k를 사용하여 특정 페이지를 검색 할 때 비슷한 이름의 두 페이지가 있지만 다른 라이브러리에있을 수 있습니다.

[mini-nevie:~] nevinwilliams% man -k route
route(4)                 - kernel packet forwarding database
route(8)                 - manually manipulate the routing tables

그런 다음 각 매뉴얼 페이지를 읽으려면 다음을 수행하십시오.

man 4 route

첫 번째를 읽고

man 8 route

두 번째를 읽으십시오.


답변