一、文件分类
1,普通文件(regular):存在于外部存储器中,用于存储普通数据。【-】
2,目录文件(directory):用于存放目录项,是文件系统管理的重要文件类型。【d】
3,管道文件(pipe):一种用于进程间通信的特殊文件,也称为命名管道 FIFO。【p】
4,套接字文件(socket):一种用于网络间通信的特殊文件。【s】
5,链接文件(link):用于间接访问另外一个目标文件,相当于 Windows 快捷方式。【l】
6,字符设备文件(character):字符设备在应用层的访问接口。【c】
7,块设备文件(block):块设备在应用层的访问接口。【b】
二、系统IO函数
1、open 打开文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); 参数: const char *pathname:需要打开的文件名及路径 int flags: 文件打开的旗标,一般有O_RDONLY, O_WRONLY, or O_RDWR O_TRUNC:文件已存在,删除文件中原有的数据 APPEND:以追加的形式打开文件 mode_t mode:创建新文件的时候给的文件操作权限 详细请见man手册或者《linux_C函数库中文手册》 返回值: 成功返回文件描述符,失败返回-1
|
2、read 读取文件内容
1 2 3 4 5 6 7 8
| #include <unistd.h> ssize_t read(int fd, void *buf, size_t count); 参数列表: int fd:读取的文件描述符 void *buf:存放读取数据的空间 size_t count:准备读取count个字节的数据 返回值: 成功返回实际读到的字节个数,失败返回-1
|
3、write 向文件写数据
1 2 3 4 5 6 7 8
| #include <unistd.h> ssize_t write(int fd, const void *buf, size_t count); 参数列表: int fd:写入到哪个文件描述符 const void *buf:准备写入的数据 size_t count:准备写入count个字节的数据 返回值: 成功返回实际写入的字节个数,失败返回-1
|
4、lseek 调整文件访问位置
1 2 3 4 5 6 7 8 9 10
| off_t lseek(int fd, off_t offset, int whence); 参数列表: int fd:文件描述符 off_t offset:偏移量,可以大于0,可以小于0,也可以等于0 int whence:从哪里偏移: SEEK_SET:从头偏移 SEEK_CUR:从当前访问位置 SEEK_END:从文件末尾偏移 返回值: 成功返回调整过后的文件访问位置,失败返回-1
|
5、ioctl / fcntl 文件控制
1 2 3 4 5 6
| int ioctl(int fd, int request, ...); 参数: int fd:待控制文件的描述符 int request:控制命令字 ...:根据控制命令字来区别 int fcntl(int fd, int cmd, ... );
|