Answers:
您需要man 2 open
C库接口,而不是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
shell会话以查看各个部分和常规内容:
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库实现)。
这种区别似乎有些武断,尤其是对于现在已成为库函数的较旧的系统调用(即使它现在是克隆的包装器,fork仍在第2节中),除非您已经知道。通常,请先查看第3节,然后如果找不到或看似无关紧要,请尝试第2节。另外,第2节中的某些功能是内部或过时的Linux特定功能,不应由普通程序(例如getdents,gettid)调用。
您还可以安装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.
apropos
,或man --names-only
与一个--regex
或--wildcard
。请参阅man man
。