开放C函数的程序员手册在哪里?


16

我正在使用debian8(jessie),然后去阅读已打开的手册页。相反,我得到了警告:

$ 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软件包,那么程序员的manpage(man 3)在哪里打开?


1
你也可以使用apropos,或man --names-only与一个--regex--wildcard。请参阅man man
CVn 2015年

在C语言中,open不是函数,而是系统调用。这是一个迂腐的区别,但这里的相关性是,系统调用是在第2,而库函数是在第3节
mpez0

Answers:


18

您需要man 2 openC库接口,而不是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

14

手册页部分在手册页中进行了描述。输入man manshell会话以查看各个部分和常规内容:

   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节还介绍了仅作为系统调用包装器的库例程。


10

只是为了进一步说明原因,该手册页在第2节中,因为它是一个系统调用(或多或少直接作为内核的一部分而不是C库实现)。

这种区别似乎有些武断,尤其是对于现在已成为库函数的较旧的系统调用(即使它现在是克隆的包装器,fork仍在第2节中),除非您已经知道。通常,请先查看第3节,然后如果找不到或看似无关紧要,请尝试第2节。另外,第2节中的某些功能是内部或过时的Linux特定功能,不应由普通程序(例如getdents,gettid)调用。

您还可以安装manpages-posix-dev软件包来获取从可移植的角度编写的一组手册页,而不是包含特定于linux的信息。在此软件包中,为C函数提供的所有手册页均在3p节中。


4

当我不确定某个手册页位于哪个部分时,可以使用-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.

3

在这种情况下,使用以下命令之一查看具有此手册页名称的所有可用页面的完整列表很有用:

$ 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.