浅尝辄止21-Linux系统调用0

当我们调用一个系统调用时,它是怎样一步一步跑到操作系统里去的呢?所谓的陷入内核是什么意思?

glibc

平时我们使用系统调用时,并不是直接使用内核暴露的函数名字的,我们实际上是调用的glibc提供的函数,而且我们平时引用的系统调用的头文件也来自glibc。

例子——pwrite

我为什么选pwrite呢?因为这个名字不容易被使用,在搜索的时候搜出来的东西比较少,会比较好研究。如果研究open,这个单词就比较常用了,研究起来稍微不方便一点。
先从头文件glibc/include/unistd.h下手,man 2 pwrite一下就知道,里面肯定有pwrite的定义,然而并没有,不信你看,只有下面这些。

extern ssize_t __pwrite (int __fd, const void *__buf, size_t __n,
             __off_t __offset);
libc_hidden_proto (__pwrite)
extern ssize_t __libc_pwrite (int __fd, const void *__buf, size_t __n,
                  __off_t __offset);
extern ssize_t __pwrite64 (int __fd, const void *__buf, size_t __n,
               __off64_t __offset);
libc_hidden_proto (__pwrite64)
extern ssize_t __libc_pwrite64 (int __fd, const void *__buf, size_t __n,
                __off64_t __offset) attribute_hidden;

纯洁的pwrite哪去了?

你可能感兴趣的:(浅尝辄止21-Linux系统调用0)