Linux下的文件I/O

1、基础知识

文件I/O:posix(可移植操作系统接口)定义的一组数组,

                不提供缓冲机制,每次读写操作都引起系统调用,

                核心概念是文件描述符,

                可访问各种类型文件,

                Linux下,标准I/O基于文件I/O实现。

文件描述符:文件描述符是一个非负整数。Linux为程序中每个打开的文件分配一个文件描述符,

                        文件描述符从0开始分配,依次递增,

                        文件I/O操作通过文件描述符来完成。

2、文件I/O的相关函数

创建或者打开一个文件:

#include<fcntl.h>

int open(const char *path, int oflag, ...);

注:成功时返回文件描述符,出错时返回EOF;

        打开文件时使用两个参数;

        创建文件时第三个参数指定新文件的权限;

        只能打开设备文件。

关闭打开的一个文件:

#include<unistd.h>

int close(int fd);

注:成功时返回0,出错时返回EOF;

        程序结束时自动关闭所有打开的文件;

        关闭文件后,文件描述符不再代表文件。

读取文件:

#include<unistd.h>

ssize_t read(int fd, void *buf, size_t count);

注:成功时返回实际读取的字节数,出错时返回EOF;

        读到文件末尾时返回0;

        buf是接收数据的缓冲区;

        count不应超过buf大小。

写入文件:

#include<unistd.h>

ssize_t write(int fd, void *buf, size_t count);

注:成功时返回实际写入的字节数,失败时返回EOF;

        buf是发送数据的缓冲区;

        count不应超过buf大小。

文件定位:

#include<unistd.h>

off_t lseek(int fd, off_t offset, int whence);

注:成功时返回当前文件的读写位置,出错时返回EOF;

        参数whence :  SEEK_SET/SEEK_CUR/SEEK_END;

        参数offset:偏移量,可正可负。

打开一个目录文件:

#include<dirent.h>

DIR *opendir(const char *name);

注:DIR是用来描述一个打开的目录文件的结构体类型;

        成功时返回目录流指针,出错时返回NULL。

读取目录流中的内容:

#include<dirent.h>

struct dirent *readdir(DIR *dirp);

注:struct dirent是用来描述目录流中一个目录项的结构体类型;

        包含成员char d_name[256] 参考帮助文档;

        成功时返回目录流dirp中下一个目录项;

        出错或者到末尾时返回NULL。

关闭一个目录文件:

#include<dirent.h>

int closedir(DIR *dirp);  成功时返回0,出错时返回EOF。

修改文件访问权限:

#include<sys/stat.h>

int chmod(const char *path, mode_t mode);

int fchmod(int fd, mode_t mode);

注:成功时返回0,出错时返回EOF;

        root和文件所有者能修改文件的访问权限。

获取文件属性:

#include<sys/stat.h>

int stat(const char *path, struct stat *buf);

int lstat(const char *path, struct stat *buf);

int fstat(int fd, struct stat *buf);

注:成功时返回0,出错时返回EOF;

        如果path是符号链接stat获取的是目标文件的属性,而lstat获取的是链接文件的属性。

        struct stat是存放文件属性的结构体类型:

                            

                   文件类型---st_mode

                   

                   文件访问权限---st_mode

                   

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值