来说一说 unix/linux中对于文件操作的这几个函数,这几个函数基本上可以满足我们对于 linux 中任何文件的需求,

首先说一说 open这个函数

在 linux 中要对文件进行操作都要先相应的将文件打开然后在处理,为什么要这么做呢?那是因为进程和文件在之间不可以直接操作,要想进程对文件操作首先要用系统调用在进程和文件之间简历一条连接,这个连接成为文件描述符,叫就像一条由进程通向内核内核的管道,构建起进程和文件之间的关系。

具体的对文件描述符的理解可以通过它的使用方法来理解,文件描述符(file descriptor)通常是一个小的非负整数。内核用它标识一个特定的进程正在访问的文件。当内核打开一个以友的文件或者创建一个新的文件时,他发回一个文件描述符(非负整数)。在读写文件时就可以使用它。

简单的介绍一下open这个函数


目标打开一个文件,让进程可以对文件进行操作。

头文件                      #include
函数原型         intfd=open(char*name,inthow)
参数
name             // 文件名
how               // 打开模式
O_RDONLY,O_WEONLY,orO_REWR// 返回值
intfd             // 返回的文件描述符(非负整数)
-1                   //  遇到错误

如果文件被顺利的打开则反悔一个正整数的值,这个值就是文件描述符,既然文件描述符是建立文件和进程之间的连接的,那么这个 int 类型的返回值是有什么作用呢?其实这个 int 返回值也就是文件描述符是用来卫衣标识这个进程和文件的连接的。如果同时打开多个文件,他们的文件描述符是不同的,如果一个文件被多个进程同时打开他们的文件描述符也是不同的。这就是文件描述符的唯一性,并且其他函数必须通过文件描述符对文件进行操作。

运用 open 这个函数就可以让我们打开一个文件,讲进程和文件关联起来。但是当文件被顺利打开是否允许再次打开呢?这种情况多发生在多个进程访问一个文件的情况,unix/linux 并不禁止一个文件同时被多个进程访问,如果禁止的话多用户模式中很多命令就不可使用。