zoukankan      html  css  js  c++  java
  • read 函数和 write 函数

    1. read

            #include <unistd.h>

            ssize_t read(int filedes, void *buf, size_t nbytes);
     
                      返回值:读取到的字节数;0(读到 EOF);-1(出错)

        read 函数从 filedes 指定的已打开文件中读取 nbytes 字节到 buf 中。以下几种情况会导致读取到的字节数小于 nbytes :

        A. 读取普通文件时,读到文件末尾还不够 nbytes 字节。例如:如果文件只有 30 字节,而我们想读取 100 字节,那么实际读到的只有 30 字节,read 函数返回 30 。此时再使用 read 函数作用于这个文件会导致 read 返回 0 。

        B. 从终端设备(terminal device)读取时,一般情况下每次只能读取一行。

        C. 从网络读取时,网络缓存可能导致读取的字节数小于 nbytes 字节。

        D. 读取 pipe 或者 FIFO 时,pipe 或 FIFO 里的字节数可能小于 nbytes 。

        E. 从面向记录(record-oriented)的设备读取时,某些面向记录的设备(如磁带)每次最多只能返回一个记录。

        F. 在读取了部分数据时被信号中断。

    读操作始于 cfo 。在成功返回之前,cfo 增加,增量为实际读取到的字节数。


    2. write

            #include <unistd.h>

            ssize_t write(int filedes, const void *buf, size_t nbytes);
     
                    返回值:写入文件的字节数(成功);-1(出错)

    write 函数向 filedes 中写入 nbytes 字节数据,数据来源为 buf 。返回值一般总是等于 nbytes,否则就是出错了。常见的出错原因是磁盘空间满了或者超过了文件大小限制。

        对于普通文件,写操作始于 cfo 。如果打开文件时使用了 O_APPEND,则每次写操作都将数据写入文件末尾。成功写入后,cfo 增加,增量为实际写入的字节数。

  • 相关阅读:
    登录Mysql看不到Mysql库
    七牛云使用记录
    FFmpeg工具
    解决VMware下CentOS连不上网络问题
    14.中介者模式
    二十三种设计模式(三)
    23种设计模式(二)
    搭建ssm环境
    文件的字符流与字节流读写
    设计模式之用工厂模式实现计算器
  • 原文地址:https://www.cnblogs.com/yingzi/p/2861450.html
Copyright © 2011-2022 走看看