1. Linux系统调用
Linux 系统调用(system call)是指操作系统提供给用户程序的一组“特殊接口”,用户程序可以通过这组“特殊”接口来获得操作系统提供的特殊服务。
为了更好的保护内核空间,将程序的运行空间分为内核空间和用户空间,他们运行在不同的级别上,在逻辑上是相互隔离的。在 Linux 中,用户程序不能直接访问内核提供的服务,必须通过系统调用来使用内核提供的服务。
Linux 中的用户编程接口(API)遵循了 UNIX 中最流行的应用编程界面标准—— POSIX。这些系统调用编程接口主要是通过 C 库(libc)实现的。
2. 文件描述符
对内核而言,所有打开文件都由文件描述符引用。文件描述符是一个非负整数。当打开一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符。当写一个文件时,用 open 或 create 返回的文件描述符标识该文件,
将其作为参数传送给 read 或 write。
在 POSIX 应用程序中,整数 0、1、2 应被代换成符号常数:
STDIN_FILENO(标准输入,默认是键盘)
STDOUT_FILENO(标准输出,默认是屏幕)
STDERR_FILENO(标准错误输出,默认是屏幕)<