linux设备驱动学习第四天(linux文件系统与设备文件系统1)

        秉承“一切都是文件”的设计思想。

        驱动最终通过操作系统的文件操作系统调用或c库函数被访问,设备驱动的结构最终也是为了迎合提供给应用程序员的API。

一、通过linux API和c库函数在用户空间进行linux文件操作的编程方法

        文件操作系统调用

        ①创建

         int creat(const char *filename,mode_t mode); 参数mode指定新建文件的存取权限,它同umask一起决定文件的最终权限

         int umask(int newmask);  改调用将umask设置为newmask,返回旧的umask,它只影响读、写和执行权限。

         ②打开

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

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

         ③读写

         int read(int fd,const void *buf,size_t length); buf为指向缓冲区的指针,length为缓冲区的大小(以字节为单位)。函数实现从文件描述符fd所指向的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节。

         int write(int fd,const void *buf,size_t length);  函数实现从buf所指向的缓冲区写入length个字节到文件描述符fd所指向的文件中中,返回值为实际写入的字节。

         ④定位

         int lseek(int fd,offset_t offset,int whence); 对于随机文件,我们可以随机的指定位置对文件进行读写。lseek()将文件读写指针相对whence移动offset个字节。操作成功时,返回指定文件指针相对于文件头的位置。参数whence可以使用以下值:

         SEEK_SET:相对文件开头

         SEEK_CUR:相对文件读写指针的当前位置

         SEEK_END:相对文件末尾

         offset可取负值

         ⑤关闭

         int close(int fd); 操作完成后,关闭文件。        

 

        C库文件操作

        ①创建和打开

        FILE *fopen(const char *filename,const char *mode); 打开指定文件filename,mode为打开模式

        ②读写

        c库函数支持字符、字符串为单位按照某种格式进行读写

        int fgetc(FILE *stream);

        int fputc(int c,FILE *stream);

        char *fgets(char *s,int n,FILE *stream);

        int fputs(const char *s,FILE *stream);

        int fprintf(FILE *stream,const char *format,...);

        int fscanf(FILE *stream,const char *format,...);

        size_t fread(void *ptr,size_t size,size_t n,FILE *stream); //此函数实现从流stream中读取n个字段,每个字段为size个字节,并将读取的字段放入ptr所指的字符数组中,返回时机已读取的字段数。可通过feof()和ferror()来判断函数调用时出现的错误。

        size_t fwrite(const void *ptr,size_t size,size_t n,FILE *stream); //此函数实现从缓冲区ptr所指的数组中把n个字段写入到流stream中,每个字段长为size个字节,返回实际写入的字段数。

       ③关闭

       int fclose(FILE *stream);

 

 

        

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑吧小考拉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值