Per*_*-lk 3 system-calls glibc linux-kernel
为什么epoll_create
没有被列为库函数(手册页,第 3 节),但是accept
却被列为库函数?虽然这两个函数都是由内核系统调用提供的libc
并且都引用内核系统调用?
我知道“为什么”问题通常不受欢迎,但这是我要求更好地理解这些概念之间的关系以及向第 2 和/或第 3 节添加某些内容的标准之间的关系以及 libc 之间的关系的方式。和系统调用(因为毕竟 libc 是为 C 程序实现与内核本身的接口的人。因此,据我了解,所有系统调用都是库函数,因为 libc 库提供了所有这些函数;或者有例外吗?我的解释?)。
至少在 Linux 手册页项目中,第 3 节的介绍中描述了哪个部分应该记录给定函数的主要标准:
\n\n\n本手册的第 3 节描述了除第 2 节中描述的实现系统调用的库函数(系统调用包装器)之外的所有库函数。
\n
您可能遇到的手册accept
页位于 POSIX Programmer\xe2\x80\x99s 手册的 \xe2\x80\x9c3p\xe2\x80\x9d: it\xe2\x80\x99s 部分。POSIX 不区分 \xe2\x80\x99d C 库函数和系统调用;它描述了系统接口,而不关心它们在哪里实现。
至于你的附属问题,一些系统调用 don\xe2\x80\x99t 具有库函数。作为一般规则,新的系统调用不会立即获取包装器;最重要的是,一些系统调用(例如init_module
are\xe2\x80\x99t)根本不会获得包装器,至少在 GNU C 库中不会。