| 论坛注册| 加入收藏 | 设为首页| RSS
Google
您当前的位置:首页 > Linux频道 > Linux开发区 > 软件开发

c/c++ 学习-read 函数和 write 函数

时间:2007-03-28 11:07:55  来源:Linux联盟收集整理  作者:
最近开始从事搜索引擎的工作,所以又重新开始了c/c++的旅程,时隔4年33HLinux联盟
不得不复习一下c/c++其中的内容,以下内容有网上别的朋友发表的,也有我自己总结的.33HLinux联盟
33HLinux联盟

1. read33HLinux联盟

        #include <unistd.h>33HLinux联盟

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

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

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

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

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

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

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

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

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

33HLinux联盟
2. write33HLinux联盟

        #include <unistd.h>33HLinux联盟

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

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

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

来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
    无相关信息
栏目更新
栏目热门