linux驱动开发-文件系统与设备文件

本文深入探讨了Linux文件系统操作,包括文件的创建、打开和关闭,以及读写函数。介绍了C库文件操作,并详细阐述了Linux的VFS(虚拟文件系统)及其基础概念,讨论了Linux文件系统与设备驱动的关系,特别是字符设备和块设备的访问方式。文章还讲解了file和inode结构体,以及sysfs和udev规则文件在设备管理中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

目录

1.Linux文件系统操作

Linux文件创建,打开,关闭函数

Linux下文件读写函数

2.C库文件操作

3.Linux文件系统

3.1根目录结构

3.2.VFS

VFS 虚拟文件系统基础概念

Linux文件系统与设备驱动关系:

设备驱动结构体:file,inode

inode结构体

inode之atime,mtime,ctime

file结构体

3.3 sysfs文件系统

3.4 udev规则文件


1.Linux文件系统操作

Linux文件创建,打开,关闭函数

#文件权限最终由mode&umask决定
int creat (const char *filename,mode_t mode); //文件创建
int umask(int newmask);                       //修改文件权限
int open (const char *filename,int flags);    //文件打开
int open (const char *filename,int flags,mode_t mode);    //文件打开
int close (int fd);//fd=open(......)//文件关闭函数

其中 flag可为以下一个或组合:(当flags含O_CREAT时,open函数相当于创建文件函数)

mode为以下一个或组合:

当然mode也可以用数字表示,方法如下:

权限数字含义:

数字含义 1 2 4 0
  执行权限 写权限 读权限 无权限

文件权限各位含义(10705为例):

位数 第一位 第二位 第三位 第四位 第五位
作用 设置用户ID 设置组ID 用户权限 组权限 其他人权限
  1 0 7(1+2+4) 0 5(1+4)
  设置 不设置 执行;读;写 无权限 读;执行 

因此10705等价与S_IRWXU|S_IROTH|SIXOTH|S_ISUID

文件打开后,就要对文件进行读写

Linux下文件读写函数

int read(int fd,const void *buf,size_t length);
int write(int fd,const void *buf,size_t length);

指定位置读写:

nt lseek(int fd,offset_t offset,int whence);

lseek()将文件读写指针相对whence移动offset个字节,函数返回文件指针相对头问价的偏移量

<
SEEK_SET 相对文件开头
SEEK_CUR
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值