Linux下的文件操作

文件描述符 所有对设备和文件的的操作都是使用文件描述符来进行的。文件描述符是一个非负的整数,它是一个索引值,并指向在内核中中每个进程所打开的文件的记录表。当需要读写文件时,需要把文件描述符作为参数传递给相应的函数。 通常,一个进程启动时,都会打开3个文件。 标准输入:对应文件描述符为0(STDIN_FILENO) 标准输出:对应文件描述符为1(STDOUT_FILENO) 标准出错处理:对应的文件描述符为2(STDERR_FILENO) 查看系统文件描述符个数 1.100624代表系统支持的,所有用户打开文件描述符的总和在这里插入图片描述 2.1024代表对每个进程的限制 也就是说,每一个用户登录后执行的程序占用文件描述符的总数不能超过这个限制 在这里插入图片描述 文件描述符和文件指针 fd:为打开文件的文件描述符,而每个进程都有一张文件描述符表,fd文件描述符就是这张表的索引,同样这张表中有一表项,该表项又是指向前面提到打开文件的file结构体,file结构体才是内核中用来描述文件属性的结构体看。
FILE结构体
struct FILE
{
char *_ptr;//文件输入的下一个位置
int _cnt;//当前缓冲区的相对位置
char *_base;//指基础位置(文件的起始位置)
Int _flag;//文件标志
int _file;//文件的有效性验证
int _charbuf;//检查缓冲区状况,如果缓冲区则不读取 int _bufsiz;//文件的大小
char *_tmpfname;//临时文件名 };
文件指针是指向:FILE结构体。
文件描述符:是文件描述表中的索引号
文件指针与文件描述符的相互转换
#文件描述符转文件指针
FILE *fdopen(int filedes, const char *opentype);
#文件指针转文件描述符
int fileno(FILE *stream);
inode
文件有创建者,文件的创建日期、文件的大小等信息就称为文件元信息,这种存储文件元信息的区域就叫做inode,中文译名为“索引节点”。每一个文件都有对应的inode除了文件名以外的所有文件信息,都存在inode之中
inode包含文件的元信息,具体来说有以下内容:
文件的字节数
文件拥有者的User ID
文件的Group ID
文件的读、写、执行权限
文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
链接数,即有多少文件名指向这个inode
文件数据block的位置
1.可以用stat命令,查看某个文件的inode信息:

在这里插入图片描述
查看文件的inode结点删除文件(当遇到文件名无法删除文件时)
find ./ -inum 688316| xargs rm -f
2.可以用df -i查看每个硬盘分区的inode总数和已经使用的数量在这里插入图片描述
文件操作的函数

文件:
FILE*
fopen 打开文件
fclose 关闭文件
fseek 跳转文件指针的位置
fread 读取文件
fwrite 写入文件
fputs fput
fgets fget 从文件中一次读取一行一个字符数据
fprintf 向文件中格式化写入数据
fscanf 从文件中格式化取出数据

?open()打开文件
int open(const char *pathname, int flags, mode_t mode);
flags:
open(文件名,文件访问权限, 文件权限);
O_CREAT 若文件不存在则创建
O_RDWR 文件访问的读写权限
O_APPEND 以追加内容的方式打开文件
O_EXCL 若创建文件的时候文件存在则报错退出
? close()关闭文件
int close(int fd);
?lseek()跳转文件指针
off_t lseek(int fd, off_t offset, int whence);
SEEK_SET 从起始位置
SEEK_CUR 从文件指针当前位置
SEEK_END 从文件末尾
offset:偏移的长度
lseek(fd , 1024, SEEK_END);
从文件末尾向前跳转1024字节

?read()读取文件
ssize_t read(int fd, void *buf, size_t count);
返回读取的实际长度,-1则读取失败
?write ()写文件
ssize_t write(int fd, const void *buf, size_t count);
返回实际的写入长度, -1则写入失败
?access()对文件进行判断
int access(const char *pathname, int mode);
F_OK 判断文件是否存在 0-存在
R_OK 判断文件是否可读
W_OK 判断文件是否可写
X_OK 判断文件是否可执行

例如:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值