Linux文件输入输出
文件打开open、文件写入write、文件读取read、文件关闭close、文件光标lseek、文件创建create
文件一般流程是打开或者创建文档——编辑文档——保存文档——关闭文档。liunx文件操作所提供的api(Application Programming Interface,应用程序接口)有open、write、read、close、lseek、create等。
文件打开open
open头文件和函数
// open头文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
//open函数
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
//open函数返回值,success 返回文件描述符, error 返回 -1
//pathname:文件路径名。例"./file1"
//flags:O_RDONLY 只读 O_WRONLY 只写 O_RDWR 可读可写可打开
// O_CREAT 如果open文件不存在,则创建文件。
// O_EXCL 如果同时指定了OCREAT,而文件已经存在,则open()出错,返回-1。
// O_APPEND 每次文件写入加到文件尾部。
// O_TRUNC 删去文件中原本的内容。
//mode: 一定是在flags中使用了O_CREAT标志,mode记录待创建的文件的访问权限。
mode的分类和加权数字表示
宏表示 | 含义 | 宏表示 | 含义 | 宏表示 | 含义 |
---|---|---|---|---|---|
S_IRUSR | 使用者可读权限 | S_IRGRP | 群组拥有读权限 | S_IROTH | 其他用户拥有读权限 |
S_IWUSR | 使用者可写权限 | S_IWGRP | 群组拥有写权限 | S_IWOTH | 其他用户拥有写权限 |
S_IXUSR | 使用者可执行权限 | S_IXGRP | 群组拥有执行权限 | S_IXOTH | 其他用户拥有执行权限 |
S_IRUSR、S_IWUSR、S_IXUSR比较常用
加权数字 | 第一位 | 第二位 | 第三位 |
---|---|---|---|
4 | 使用者可读权限 | 群组拥有读权限 | 其他用户拥有读权限 |
2 | 使用者可写权限 | 群组拥有写权限 | 其他用户拥有写权限 |
1 | 使用者可执行权限 | 群组拥有执行权限 | 其他用户拥有执行权限 |
例如:0666,拥有4+2=6使用者可读、可写权限;拥有4+2=6群组可读、可写权限;拥有4+2=6其他用户可读、可写权限。
什么是文件描述符?简单来说就是描述和区分文件的一个标志。上面看出文件描述符是个int型。
什么是程序?什么进程?
1、程序是静态的概念,gcc xxx.c –o pro 磁盘中生成pro文件,叫做程序;
2、进程是程序的一次运行活动,通俗点意思是程序跑起来了,系统中就多了一个进程;
ps:图中fd为文件描述符,图中进程和原进程是一个意思,由于为让图结构看着清晰,取了原进程的名字。