read/write函数:
1.read
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
参数:
-fd:文件描述符,open得到的,通过这个文件描述符操作某个文件
-buf:需要读取数据存放的地方,数组的地址;
-count:指定的数组的大小
返回值:
-成功:
>0:返回实际的读取到的字节数
=0:文件已经读完了
-失败:
返回-1,并且设置error
2.write
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
参数:
-fd:文件描述符,open得到的,通过这个文件描述符操作某个文件
-buf:需要读取数据存放的地方,数组的地址;
-count:要写的数据的实际的大小
返回值:
-成功:
>0:返回实际的写入的字节数
=0:没有任何的内容写入
-失败:
返回-1,并且设置error
lseek函数
#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);
参数:
-fd:文件描述符
-offset:偏移量
-whence:
SEEK_SET
设置文件指针的偏移量
SEEK_CUR
设置偏移量:当前位置 + 第二个参数offset的值
SEEK_END
设置偏移量:文件大小 + 第二个参数的值
返回值:返回文件指针所在的位置
作用:
1.移动文件指针到文件头 lseek(fd, 0, SEEK_SET)
2.获取当前文件指针的位置 lseek(fd, 0, SEEK_CURRENT)
3.获取文件长度 lseek(fd, 0, SEEK_END)
4.拓展文件的长度 lseek(fd, 100, SEEK_END)(增加100个字节)需要写一次数据
stat/lstat函数
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
- int stat(const char *pathname, struct stat *statbuf);
作用:获取一个文件相关的信息,如文件大小、权限、Inode、Uid、最近访问时间、最近更改时间、最近改动时间等等
参数:
-pathname:操作文件的路径
-statbuf:结构体变量,传出参数,用于保存获取到的文件的信息
返回值:
成功:返回0
失败:返回-1,设置errno
2. int lstat(const char *pathname, struct stat *statbuf);
获取软连接文件的信息