文章目录
open:打开一个文件或者创建一个新文件
/*
* 函数名称: open
* 函数声明: int open(const char *path, int flags, mode_t mode);
* 函数描述: 打开一个文件或者创建一个新文件。此函数使用指定的路径和标志打开文件,如果文件不存在则创建新文件。
* 参数:
* - path: 文件路径
* - flags: 打开文件的模式和标志
* - mode: 新创建文件的权限(仅当flags中包含O_CREAT标志时生效)
*
* 返回值:
* 成功时返回文件描述符,出错时返回-1,并设置errno
*
* 使用示例:
* int fd = open("test.txt", O_RDONLY);
* if (fd == -1) {
* perror("open");
* }
*/
close:关闭一个文件描述符
/*
* 函数名称: close
* 函数声明: int close(int fd);
* 函数描述: 关闭一个打开的文件描述符。
* 参数:
* - fd: 文件描述符
*
* 返回值:
* 成功时返回0,出错时返回-1,并设置errno
*
* 使用示例:
* int fd = open("test.txt", O_RDONLY);
* // 进行文件操作...
* int result = close(fd);
* if (result == -1) {
* perror("close");
* }
*/
perror:打印错误消息
/*
* 函数名称: perror
* 函数声明: void perror(const char *s);
* 函数描述: 打印与当前errno值对应的错误消息到标准错误输出。
* 参数:
* - s: 可选参数,用于指定一个前缀字符串,将其与错误消息一起输出。
*
* 返回值:
* 无
*
* 使用示例:
* FILE* fp = fopen("test.txt", "r");
* if (fp == NULL) {
* perror("fopen");
* }
*/
read:从文件描述符中读取数据
/*
* 函数名称: read
* 函数声明: ssize_t read(int fd, void *buf, size_t count);
* 函数描述: 从文件描述符fd中读取数据,并将其存储到缓冲区buf中。最多读取count字节的数据。
* 参数:
* - fd: 文件描述符
* - buf: 存储读取的数据的缓冲区
* - count: 最大读取字节数
*
* 返回值:
* 成功时返回实际读取的字节数,出错时返回-1,并设置errno
*
* 使用示例:
* char buffer[1024];
* int fd = open("test.txt", O_RDONLY);
* ssize_t bytesRead = read(fd, buffer, sizeof(buffer));
*
* 注意:
* - 如果读取的字节数少于count,则可能有以下情况:
1. 文件结束
2. 数据在缓冲区不足以填满count字节时返回
3. 在非阻塞模式下,没有可用的数据立即可用时返回
*/
write:向文件描述符写入数据
/*
* 函数名称: write
* 函数声明: ssize_t write(int fd, const void *buf, size_t count);
* 函数描述: 将缓冲区buf中的数据写入到文件描述符fd所对应的文件中。最多写入count字节的数据。
* 参数:
* - fd: 文件描述符
* - buf: 存储要写入的数据的缓冲区
* - count: 写入的最大字节数
*
* 返回值:
* 成功时返回实际写入的字节数,出错时返回-1,并设置errno
*
* 使用示例:
* int fd = open("test.txt", O_WRONLY | O_CREAT, 0644);
* const char* data = "Hello, World!";
* ssize_t bytesWritten = write(fd, data, strlen(data));
*
*/
lseek:在文件中设置文件偏移量
/*
* 函数名称: lseek
* 函数声明: off_t lseek(int fd, off_t offset, int whence);
* 函数描述: 在文件中设置文件偏移量,用于读取或写入文件的不同位置。
* 参数:
* - fd: 文件描述符
* - offset: 偏移量,可以是正数、负数或0
* - whence: 偏移量的基准位置,有以下取值:
* - SEEK_SET: 从文件开头计算偏移量
* - SEEK_CUR: 从当前位置计算偏移量
* - SEEK_END: 从文件末尾计算偏移量
*
* 返回值:
* 返回新的文件偏移量,出错时返回-1,并设置errno
*
* 使用示例:
* int fd = open("test.txt", O_RDONLY);
* off_t newPosition = lseek(fd, 0, SEEK_SET); // 设置偏移量为开头位置
*
*/
umask:设置文件权限屏蔽位
/*
* 函数名称: umask
* 函数声明: mode_t umask(mode_t mask);
* 函数描述: 设置当前进程的文件权限屏蔽位,并返回旧的文件权限屏蔽位。
* 参数:
* - mask: 要设置的文件权限屏蔽位,用来限制新创建文件的默认权限
*
* 返回值:
* 返回之前的文件权限屏蔽位
*
* 使用示例:
* mode_t oldMask = umask(077); // 设置屏蔽位为 077,限制新创建文件的默认权限
*
*/
access:检查进程是否可以访问指定的文件路径
/*
* 函数名称: access
* 函数声明: int access(const char *path, int mode);
* 函数描述: 检查进程是否可以访问指定的文件路径。
* 参数:
* - path: 文件路径
* - mode: 检查模式,可以是下列值之一:
* - R_OK: 检查读权限
* - W_OK: 检查写权限
* - X_OK: 检查执行权限
* - F_OK: 检查文件是否存在
*
* 返回值:
* 成功时返回0,出错时返回-1,并设置errno
*
* 使用示例:
* // 检查文件是否可读
* if (access("myfile.txt", R_OK) == 0) {
* printf("可读\n");
* } else {
* perror("access");
* }
*/