首页 > 其他 > 详细

read、write和lseek

时间:2014-08-17 01:02:41      阅读:413      评论:0      收藏:0      [点我收藏+]

1. read函数

1)      函数原型:

       #include <unistd.h>

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

2)      函数功能:

       read系统调用从文件描述符fd指向的文件中,读取count个字节到buf中。

3)      参数说明:

       fd:文件描述符

       buf:保存读入信息的缓存

      count:要读取的字节数

      返回值:如果read成功,则返回读到的字节数,如果已达到结尾,则返回0,出错     

                返回-1

      

2. write函数

1)   函数原型:

         #include <unistd.h>

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

2)   函数功能:

       write系统调用将buf所指向的缓冲区的count个字节内容写入fd指向的文件

3)   参数说明:

       fd:要写入的文件

       buf:要写入的信息所在的缓存

      count:要写入的字节数

      返回值:如果write成功,则返回写入的字节数,出错返回-1

 

3. lseek函数

1)    函数原型:

       #include <sys/types.h>

       #include <unistd.h>

       off_t  lseek(int fildes, off_t offset, int whence);

2)    函数功能:

       lseek系统调用用来移动读写指针的位置

3)   参数说明:

       fd:要操作的文件

      offset:相对whence移动的位移数,允许负值

      whence:起始指针,它有三个取值

            SEEK_SET 从文件开始处计算偏移量

            SEEK_CUR 从文件指针的当前位置开始计算偏移量

            SEEK_END 从文件结尾处开始计算偏移量

     文件指针值等于当前指针值加上offset的值。

     返回值:调用成功时范围当前的读写位置,也就是距离文件开始处多少字节,若

                有错误返回-1

4)  常见用法:

       将文件读写指针移动到文件开头:

       lseek(int fildes, 0, SEEK_SET);

       将文件读写指针移动到文件结尾:

  lseek(int fildes, 0, SEEK_END);

  获取文件读写指针当前的位置

  lseek(int fikdes, 0, SEEK_CUR);

注意:有些设备(或者说设备文件)不能使用lseek,linux系统不允许lseek()对tty设备进行操作,此项操作会使得lseek()范围错误代码ESPIPE

read、write和lseek,布布扣,bubuko.com

read、write和lseek

原文:http://www.cnblogs.com/xiaofeng6636/p/3917164.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!