嵌入式学习记录20

标准IO和文件IO的区别:

    1.标准IO是库函数,是对系统调用的封装
    2.文件IO是系统调用,是Linux内核中的函数接口
    3.标准IO是有缓存
    4.文件IO是没有缓存

文件IO:

    1.操作步骤:

                                打开 -> 读/写 -> 关闭

    2.打开文件:

          open 

形式:

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

  功能:

                   打开文件并且获得文件描述符

      参数:

                  pathname:要打开的文件名

 flags: 标志位

                    O_RDONLY    只读
                    O_WRONLY    只写
                    O_RDWR      读写
                
                    O_APPEND    追加
                    O_ASYNC     异步IO
                    O_CREAT     文件不存在创建
                    O_TRUNC     文件存在截断(清0)

     返回值:

                     成功返回文件描述符(很小的非负整数)

                                【文件描述符 从0开始递增;但在文件使用中,打开文件时自动打开stdin(0)    stdout(1)      stderr(2)  因此再打开时,此时文件描述符已经是从3 开始


                      失败返回-1 

                          新生成的文件描述符总是为尚未被使用的最小的非负整数

 3.关闭文件:

 close :

形式:

                   int close(int fd);

    功能:

                 将fd对应的文件描述符关闭

4.读写:        read/write 

  1.write:

形式:

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

 功能:

                向fd对应的文件中写入buf指向的count个字节

   参数:

                    fd:文件描述符
                    buf:写入数据空间首地址
                    count:写入的字节数

   返回值:

                    成功返回实际写入字节数
                    失败返回-1 

    2.read 

形式:

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

   功能:

                从文件描述符fd对应的文件中读取count个字节存放到buf开始的空间中

 参数:

                   fd:文件描述符 
                   buf:存放数据空间的首地址
                   count:想要读取数据字节数

        返回值: 

                   成功返回实际读到的字节数
                    失败返回-1 
                    读到文件末尾返回0 

你可能感兴趣的:(学习)