十 一、I/O操作之系统调用(二)
我们可以用系统调用来操作文件,这种方式和 I/O库函数 各有千秋,我们需要明白库函数在用户地址空间执行,系统调用是在内核地址空间执行,依赖Linux系统,不要搞混了,那我们下面来学习一下。 文章目录: 一、基本概念 (一)文件描述符 (二)带缓冲区的I/O && 不带缓冲区的I/O (三)man指令 (四)基础中断机制知识 二、系统调用文件I/O函数 (一)open (二)read (三)write (四)close (五)lseek 三、系统调用的过程 四、例题 一、基本概念 (一)文件描述符 系统调用是在内核空间执行的,那么我们就需要了解在内核中是如何标识文件的。对于内核而言,所有打开的文件都通过文件描述符(简称fd)引用就是标识。 文件描述符是一个非负整数 ,指代被打开的文件,当打开一个现有的文件或创建一个新文件时,内核向进程返回一个文件描述符,将其作为参数给系统调用的I/O操作。 POSIX标准要求每次打开文件时,必须从小到大申请文件描述符,那么最小的文件描述符是几呢?不是0,因为系统已经规定了前三个: 文件描述符 POSIX名称 (常量定义在头文件<unistd.h>) 用途 stdio流 0 STDIN_FILENO 标准输入 stdin 1 STDOUT_FILENO 标准输出 stdout 2 STDERR_FILENO 标准错误 stderr