同一命令的多个手册页有什么区别?

What is the difference between multiple man pages of the same command?

本文关键字:什么 区别 命令 一命      更新时间:2023-10-16

我开始学习C/C++的套接字编程,并检查手册页中的绑定,侦听等功能。

当我在手册页之间导航时,我注意到在某些情况下,同一系统调用有多个手册页,例如 socket()

http://man7.org/linux/man-pages/man2/socket.2.html

http://man7.org/linux/man-pages/man3/socket.3p.html

http://man7.org/linux/man-pages/man7/socket.7.html

在这些手册中,我的 Linux 盒子里出现的是第一个(socket(2))。

我注意到一个带有3p后缀的标题为"POSIX程序员手册",其余两个标题为"Linux程序员手册"。函数原型和用法是相同的(据我所知)。

我的问题是:对于同一系统调用,两个不同版本的 Linux 程序员手册的目的是什么,偏执之间的数字是什么意思(socket(2)、socket(3p)、socket(7))?

手册页按部分组织,每个部分都有自己的主题。查看手册页以获取man,尝试运行man man,它列出了所有可用的部分:

  1. 可执行程序或外壳命令
  2. 系统调用(内核提供的函数)
  3. 库调用(程序库中的函数)
  4. 特殊文件(通常在/dev 中找到)
  5. 文件格式和约定,例如/etc/passwd
  6. 游戏
  7. 杂项(包括宏包和约定),例如 man(7)、groff(7)
  8. 系统管理命令(通常仅适用于 root)
  9. 内核例程 [非标准]

对于socket的例子,"socket(2)"是操作系统内核提供的系统调用,"socket(3)"是库提供的POSIX接口,"socket(7)"是关于socket主题的一般文档。您可以看到这三者都有不同的内容。