1、open
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
int fd;
fd=open("test.txt",O_RDONLY);
if (fd==-1)
{
perror("open");
return -1;
}
printf("Done");
close(fd);
return 0;
}
read/write
文件I/O中的read和write是用于读取和写入文件数据的函数。
read函数用于从文件中读取数据。它的原型如下:
ssize_t read(int fd, void *buf, size_t count);
- fd是文件描述符,表示要读取的文件。
- buf是用于存储读取数据的缓冲区。
- count是要读取的字节数。
read函数会尝试从文件中读取指定数量的字节,并将其存储在缓冲区buf中。它返回实际读取的字节数,如果返回值为0,则表示已到达文件末尾,如果返回值为-1,则表示读取出错。并设置错误号
write函数用于向文件中写入数据。它的原型如下:
ssize_t write(int fd, const void *buf, size_t count);
- fd是文件描述符,表示要写入的文件。
- buf是包含要写入数据的缓冲区。
- count是要写入的字节数。
write函数会将缓冲区buf中的数据写入到文件中。它返回实际写入的字节数,如果返回值为-1,则表示写入出错。并设置错误号
lseek
lseek 函数是一个用于在文件中移动文件指针的系统调用函数。它可以用于改变文件当前的读写位置。
lseek 函数的原型如下:
off_t lseek(int fd, off_t offset, int whence);
- fd 是文件描述符,用于指定要操作的文件。
- offset 是一个偏移量,用于指定要移动的字节数。正值表示向文件末尾方向移动,负值表示向文件开头方向移动。
- whence 是一个标志,用于指定偏移量的基准位置。常见的取值有:
- SEEK_SET:从文件开头开始计算偏移量。
- SEEK_CUR:从当前位置开始计算偏移量。
- SEEK_END:从文件末尾开始计算偏移量。
lseek 函数的返回值是新的文件指针位置,如果出现错误,返回值为 -1。
通过调用 lseek 函数,我们可以在文件中随意移动文件指针,以便进行读取、写入或其他文件操作。