Linux程序员手册中正在记录哪些文档?

问题描述

我在Linux系统中使用过socket()的手册页,我想知道它所记录的功能属于什么。

例如,函数int socket(int domain,int type,int protocol)。函数是glibc的一部分吗?它是否以某种方式直接成为Linux内核的一部分?该手册的标题为 Linux 程序员手册。

我想得到一个解释和澄清。

解决方法

经过我的细心研究:

C POSIX libraryPOSIX系统的C标准库,它包含ANSI C标准的众多附加功能,其中大多数功能与某些操作系统有关。极为有用(多线程实现,联网(包括任何类型的通信(例如IPC)),用户权限管理等)

例如,GNU/Linux操作系统与POSIX兼容,因此glibc正在实现C POSIX library standardPOSIX {{1} }),其中包含所有其他功能和标头,以及使用Linux的系统调用在Linux中实现的标头。

在我们的案例中,Linux的开发人员手册页中介绍的套接字文档属于加利福尼亚大学伯克利分校(通常以这种形式的套接字和现代网络进行开发)。因为POSIX已“采用”了伯克利的套接字,并且在其C标准库中包含了头文件libc,所以sys/socket.h系统在称为GNU/Linux的C标准库中实现了它。

因此,套接字的文档实际上记录了glibc函数,这些函数与POSIX的套接字函数完全兼容,而POSIX的套接字函数与Berkeley兼容。

非常感谢帮助过的人!

顺便说一句:欢迎其他答案。

,

手册页中有4组有关C函数的文档(请参见man 1 man):

  • 库调用(所有库函数,但系统调用包装器除外; 大多数libc函数):

    这些在手册页的第3节中。

    示例:man 3 printf。 该页面记录了glibc提供的功能 (或您使用的任何C库)。

    注意:它记录了printf()的glibc版本, 与所有标准的所有偏差 也可以定义功能。

  • POSIX函数定义:

    这些在手册页的3p节中。

    示例:man 3p socket。 该页面记录了socket()函数的POSIX定义。 它可能与您系统的实际实现有所不同。

    注意:软件包中的POSIX文档com manpages-posix-devmanpages-posix在Debian系统中。

  • 使用libc包装器的系统调用:

    这些是手册页第2节中定义的大多数页面。

    这些功能由内核实现, 而glibc提供了包装函数,以便 您不必使用例如syscall(__NR_socket,...)

    示例:man 2 socket。 该页面记录了socket()的内核实现。 它可能与socket(3p)不同。

  • 没有libc包装器的系统调用:

    这些是手册页第2节中定义的某些页面。

    示例:man 2 membarrier

    这些功能由内核实现。

    手册页将指出,没有glibc包装器, 因此您应该致电syscall(__NR_membarrier,...)

MEMBARRIER(2)          Linux Programmer's Manual         MEMBARRIER(2)

NAME
       membarrier - issue memory barriers on a set of threads

SYNOPSIS
       #include <linux/membarrier.h>

       int membarrier(int cmd,unsigned int flags,int cpu_id);

       Note:  There  is  no  glibc  wrapper  for this system call; see
       NOTES.
[...]

NOTES
[...]
       Glibc  does not provide a wrapper for this system call; call it
       using syscall(2).

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...