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 增加,增量为实际写入的字节数。

  • 相关阅读:
    posix多线程有感POSIX 线程间的内存可视性
    同步和互斥的一些问题(死锁,优先级逆转)
    POSIX线程属性
    POSIX 条件变量详细解析
    VMware网络配置详解
    POSIX线程
    Java+Selenium——Actions鼠标悬停
    Java+Selenium——截图方法TakeScreenshot——保存到桌面——TakeScreenshot截图只针对浏览器的web事件
    Java+Selenium——利用Robot类截图——整个桌面截图
    Java+Selenium——如何处理日历控件——方法二
  • 原文地址:https://www.cnblogs.com/yingzi/p/2861450.html
Copyright © 2011-2022 走看看