0

我知道那read是系统调用。但是当我阅读man 2 and man 3 read 时,它向我展示了不同的解释。所以,我怀疑它read有库函数和系统调用。在这种情况下,如果我read在我的 c 程序中使用,编译器是否会考虑读取为library函数,或者system call请解释一下这种混淆。

4

2 回答 2

6

它没有。系统调用存在于 libc(C 标准库)中,就像库函数一样。libc 中系统调用的实现只是“存根”,它调用调用内核的特定于系统的方法。

于 2012-05-17T15:17:00.370 回答
2

我假设你在 Linux 上。在该平台上,手册页read(2)描述了 Linux 系统调用,同时read(3)描述了 POSIX 规范read(如果您安装了 POSIX 手册页)。后者属于类别3,因为 POSIX 没有指定系统调用和库函数之间的区别。

libc 中只有一个read,它是系统调用(一个薄包装)。

于 2012-05-17T15:20:28.337 回答