第5章--文件系统与设备文件

一、Linux文件操作

  1. 创建

    int creat(const char *filename, mode_t mode);
    

    参数mode指定新建文件的存取权限,它同umask一起决定文件的最终权限(mode&umask)。

  2. 打开

    int open(const char *pathname, int flags);
    int open(const char *pathname, int flags, mode_t mode);
    

    open函数有两个形式,其中pathname是我们要打开的文件名,flags指定打开的方式。

  3. 读写

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

    参数buf为指向缓冲区的指针,length为缓冲区的大小(以字节为单位)。
    函数read实现从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节数。
    函数write实现把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数。

  4. 定位

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

    将文件读写指针相对whence移动offset个字节。操作成功时,返回文件指针相对于文件头的位置。

  5. 关闭

    int close(int fd);
    

    当我们操作完成以后,要关闭文件,此时,只要调用close就可以了,其中fd是我们要关闭的文件描述符。

二、Linux文件系统

/bin:包括基本命令,如ls、cp、mkdir等,这个目录中的文件都是可执行的。
/sbin:包括系统命令,如modprobe、ifconfig等,大多是涉及系统管理的命令,这个目录中的文件都是可执行的。
/dev:设备文件存储目录,应用程序通过对这些文件的读写和控制以访问实际的设备。
/etc:系统配置文件的所在地。busybox的启动脚本也存放在该目录。
/lib:系统库文件存放目录。
/mnt:这个目录一般是用于存放挂载存储设备的挂载目录。
/opt:opt是“可选”的意思,有些软件包会被安装在这里。
/proc:操作系统运行时,进程及内核信息(比如CPU、硬盘分区、内存信息等)存放在这里。
/tmp:用户运行程序的时候,有时会产生临时文件,存放在这里。
/usr:这个是系统存放程序的目录,比如用户命令、用户库等。
/var:var表示变化的意思,这个目录的内容经常变动,如/var/log目录被用于存放系统日志。
/sys:Linux2.6以后的内核所支持的sysfs文件系统被映射在此目录上。Linux设备驱动模型中的总线、驱动和设备都可以在此找到对应的节点。

三、文件系统与设备驱动

如下图所示为Linux中虚拟文件系统(VFS)、磁盘/flash文件系统及一般的设备文件与设备驱动程序之间的关系。

        应用程序
-----------|------------------ 系统调用
          VFS
-----------|---------------- file_operations
        设备文件
           |
       字符设备驱动
           |
        字符设备

四、设备文件系统udev

udev在用户空间中执行,动态建立/删除设备文件,允许每个人都不用关心主/次设备号而提供LSB名称,并且可以根据需要固定名称。
udev的工作过程如下:

  1. 当内核检测到系统中出现了新设备后,内核会通过netlink套接字发送uevent。
  2. udev获取内核发送的信息,进行规则的匹配。

在嵌入式系统中,也可以用udev的轻量级版本mdev,mdev集成于busybox中。在编译busybox的时候,选中mdev相关项目即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值