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