我知道read
是系统调用。但是当我阅读man 2 and man 3
时,它会向我展示不同的解释。所以,我怀疑read
有库函数和系统调用。在这种情况下,如果我在我的c程序中使用read
,编译器是否会将读取视为library
函数或system call
请解释我这个混乱。
答案 0 :(得分:6)
没有。系统调用存在于libc(C标准库)中,就像库函数一样。 libc中系统调用的实现只是“存根”,它调用特定于系统的调用内核的方法。
答案 1 :(得分:2)
我假设你在Linux上。在该平台上,联机帮助页read(2)
描述了Linux系统调用,而read(3)
描述了read
的POSIX规范,如果您安装了POSIX联机帮助页。后者属于3
类,因为POSIX没有指定系统调用和库函数之间的区别。
libc中只有一个read
,它是(一个很薄的包装)系统调用。