-
read
格式:
#include <unistd.h>
seze_t read(int fildes, void *buf, size_t nbytes);
read的作用是从与文件描述符fildes相关联的文件里读入nbytes个字节的数据,并放到buf里面。返回的是实际读入的字节数,可能会小于请求的字节数(nbytes)。返回0 表示的是没有读入任何字节,表示已经达到文件尾部了。如果是 -1表示调用出现错误。
-
write
格式:
#include <unistd.h>
size_t write(int fildes, const void *buf, size_t nbytes);
write的作用是把缓冲区buf的前nbytes个字节写入与文件描述符fildes关联的文件中。返回的是实际写入的字节数,可能会小于请求的字节数(nbytes)。返回0 表示的是没有写入任何字节。如果是 -1表示调用出现错误。
-
open
格式:
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
int open ( const char *path, int oflags );
int open ( const char *path, int oflags, mode_t mode );
open函数建立了一条到文件或设备的访问路径。若成功则返回一个文件描述符。类似于 read , write等函数就可以调用该函数。
这个文件描述符是唯一的,不会和其他运行的进程共享。调用成功返回一个新的文件描述符,失败时返回-1。注意:返回的文件
描述符使用的是没有用的描述符的最小值。
所以,如果俩文件同时打开一个文件则会返回两个不同的文件描述符。如果发生对文件的写操作,也是各写各的,分别接着上次离开的位置继续写。而且数据不会交叉到一起,后写的会覆盖掉先写的。为防止发生这情况,可以使用文件锁(后面用到在详细了解)。
path: 准备打开的文件或设备的名字
oflags:用来定义打开文件的所采取的动作(比较常用的如下表)
oflags模式 | 说明 |
O_RDONLY | 以只读方式打开 |
O_WRONLY | 以只写方式打开 |
O_RDWR | 以读写的方式打开 |
O_CREAT | 没有就创建文件 |
一些其他的包括:
O_APPEND:把写入的数据追加到文件的末尾。
O_TRUNC:把文件长度设置为0,也是清空文件里面的内容。
O_EXCL:与O_CREAT一起使用,可以确保调用者创建出文件。当加上这个参数可以防止两个程序同时创建一个文件。如果文件存在,open将调用失败。