1 -1 本文是Linux 系统调用系列文章的第一篇,对Linux 系统调用的定义、基本原理、使用方法和注意事项大概作了一个介绍,以便读者对Linux 系统调用建立一个大致的印象
什么是系统调用
Linux 内核中设置了一组用于实现各种系统功能的子程序,称为系统调用
用户可以通过系统调用命令在自己的应用程序中调用它们
从某种角度来看,系统调用和普通的函数调用非常相似
区别仅仅在于,系统调用由操作系统核心提供,运行于核心态;而普通的函数调用由函数库或用户自己提供,运行于用户态
二者在使用方式上也有相似之处,在下面将会提到
随 Linux 核心还提供了一些 C 语言函数库,这些库对系统调用进行了一些包装和扩展,因为这些库函数与系统调用的关系非常紧密,所以习惯上把这些函数也称为系统调用
Linux 中共有多少个系统调用
这个问题可不太好回答,就算让 Linus Torvaldz 本人也不见得一下子就能说清楚
4 版内核中,狭义上的系统调用共有 221 个,你可以在/include/asm-i386/unistd
h中找到它们的原本,也可以通过命令"man 2 syscalls"察看它们的目录(man pages 的版本一般比较老,可能有很多最新的调用都没有包含在内)
广义上的系统调用,也就是以库函数的形式实现的那些,它们的个数从来没有人统计过,这是一件吃力不讨好的活,新内核不断地在推出,每一个新内核中函数数目的变化根本就没有人在乎,至少连内核的修改者本人都不在乎,因为他们从来没有发布过一个此类的声明
随本文一起有一份经过整理的列表,它不可能非常全面,但常见的系统调用基本都已经包含在内,那里面只有不多的一部分是你平时用得到的,本专栏将会有选择的对它们进行介绍
为什么要用系统调用
实际上,很多已经被我们习以为常的C 语言标准函数,在 Linux 平台上的