• read、write和lseek


    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

  • 相关阅读:
    《MySQL入门很简单》练习7.4
    《MySQL入门很简单》练习6.9
    《MySQL入门很简单》练习6.6
    《MySQL入门很简单》练习6.5
    "mysql"不是内部或外部命令,也不是可运行的程序或批处理文件
    TControl与Windows消息
    TObject与消息分发
    长串
    使用TSplitter控件调整其他控件大小简便方法
    Cocos2d-x缓存机制(一)
  • 原文地址:https://www.cnblogs.com/xiaofeng6636/p/3917164.html
Copyright © 2020-2023  润新知