linux系统编程之文件IO(一)

文件IO是从打开文件开始的

在linux中,一切皆文件,想对文件内容进行操作,除了有操作权限外,更重要的一点是要打开文件。(以下只有干货)
1)系统调用:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open (const char *name, int flags);
int open (const char *name, int flags, mode_t mode);

open方法详情可见man 2 open
在这里提示一下:flags参数一定包含以下参数之一

O_RDONLY
O_WRONLY
O_RDWR

并且flags可以与man手册中提示的其他参数按位与。已达到编程者想要的行为。如果用open创建新文件,一定要注意要指定权限,如果不指定权限,结果未知。

open方法会返回一个对应文件的文件描述符(整数),用户空间和内核空间都将文件描述符作为一个进程的唯一cookie。

内核为每一个进程维护一个文件表(file table),废话不多说,直接上图(如有问题请评论,作者即时修改)

file tablecreat 方法是创建文件的首选方法:

creat (file, 0644) <==> open (file, O_WRONLY | O_CREAT | O_TRUNC,0644)

具体使用规则参见man creat