Linux文件 I/O 介绍

 

Linux文件 I/O 介绍

1. Linux系统调用

Linux系统调用(system call)是指操作系统提供给用户程序的一组“特殊接口”,用户程序可以通过这组“特殊”接口来获得操作系统提供的特殊服务。

为了更好的保护内核空间,将程序的运行空间分为内核空间和用户空间,他们运行在不同的级别上,在逻辑上是相互隔离的。在Linux中,用户程序不能直接访问内核提供的服务,必须通过系统调用来使用内核提供的服务。

Linux中的用户编程接口(API)遵循了UNIX中最流行的应用编程界面标准——POSIX。这些系统调用编程接口主要是通过C库(libc)实现的。

2. 文件描述符

对内核而言,所有打开文件都由文件描述符引用。文件描述符是一个非负整数

在linux中文件描述符的范围是0~OPEN_MAX。

当打开一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符。当写一个文件时,用open或create返回的文件描述符标识该文件,将其作为参数传送给read或write。

在POSIX应用程序中,整数0、1、2应被代换成符号常数:

STDIN_FILENO(标准输入,默认是键盘) STDOUT_FILENO(标准输出,默认是屏幕) STDERR_FILENO(标准错误输出,默认是屏幕),这些内容通常定义在 </usr/include/unistd.h>中。

Linux中每个进程在创建时,都会打开三个文件,这三个文件就是stdin、stdout、stderr,他们对应的文件描述符为0、1、2。在默认情况下使用open()打开文件时,分配的是最小未用文件描述符。

3. Liunx文件I/O 

文件I/O没有缓冲

  不带缓冲是指每个read和write都是调用内核中相应的系统调用。

  不带缓冲的I/O函数不是ANSI C的组成部分,但是是POSIX和XPG3的组成部分。

文件I/O通过文件描述符来访问文件

Linux提供可用的文件I/O函数很多,其中比较常用的有:打开文件,读文件,写文件等。大多数Linux文件IO只需要用到5个函数:open,read,write,lseek以及close。

原文地址:https://www.cnblogs.com/chen-farsight/p/6023097.html