我正在使用 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)在哪里?
答案1
您需要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
答案2
联机帮助页部分在联机帮助页本身中进行了描述。进入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 节也描述了只是系统调用包装器的库例程。
答案3
为了进一步阐明其原因,联机帮助页位于第 2 节中,因为它是一个系统调用(或多或少直接作为内核的一部分实现,而不是 C 库)。
这种区别看起来有些随意,特别是对于现在是库函数的旧系统调用(fork 仍然在第 2 节中,尽管它现在是克隆的包装器),除非您已经知道了。一般来说,首先查看第 3 部分,如果找不到或看起来可能不相关,请尝试第 2 部分。另外,第 2 节中的一些函数是内部或过时的 linux 特定函数,不应由普通程序调用(例如 getdents、gettid)。
您还可以安装 manpages-posix-dev 软件包来获取一组从可移植角度编写的手册页,而不是包含特定于 Linux 的信息。在此包中,为 C 函数提供的所有联机帮助页均位于第 3p 节中。
答案4
在这种情况下,使用以下命令之一查看具有此联机帮助页名称的所有可用页面的完整列表非常有用:
$ 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