zoukankan      html  css  js  c++  java
  • Linux系统编程8_文件I/O

    fcntl.h 头文件,file control的缩写。

    open函数,openat函数:

    int open(const char *path, int oflag);
    
    int openat(int fd, const char *path, int oflag);

    将准备打开的文件或是设备的名字作为参数path传给函数,oflags用来指定文件访问模式。

    两个系统调用成功返回一个新的文件描述符,失败返回-1。两个函数返回的文件描述符一定是最小的未用描述符数值。

    creat函数:

    int creat(const char *path, mode_t mode);

    若成功,返回为只写打开的文件描述符;若出错,返回-1

    close函数:

    int close(int fd);

    若成功返回0,若出错返回-1;

    lseek函数:

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

    若成功返回新的文件偏移量,若出错,返回为-1;

    每个打开的文件都有一个与其相关联的“当前文件偏移量”,通常是一个非负整数。

    用以度量从文件开始处计算的字节数。通常读写操作都从当前文件的偏移量处开始,并使偏移量增加所读写的字节数。

    对参数offset的解释与参数whence有关:

    若whence是SEEK_SET,则将该文件的偏移量设置为距文件开始处offset个字节;

    若whence是SEEK_CUR,则将该文件的偏移量设置为其当前值加offset,offset可为正或负;

    若whence是SEEK_END,则将该文件的偏移量设置为文件长度加offset,offset可正可负;

    可用以下方式获取打开文件的偏移量:

    off_t  curpos;

    curpos = lseek(fd, 0, SEEK_CUR);

    read函数:

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

    调用read函数从打开文件中读数据;

    返回值:读到的字节数,若已到文件尾,返回 0,若出错,返回-1;

    write函数:

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

    返回值:若成功,返回已写的字节数;若出错,返回-1;

    其返回值通常与参数nbytes的值相同,否则表示出错。write出错的一个常见原因是:磁盘已写满,或者超过了一个给定的进程的文件长度限制。

    对于普通文件,写操作从文件的当前偏移量处开始。如果在打开该文件时,指定了O_APPEND选项,则在每次写操作之前,将文件偏移量设置在文件的当前结尾处。在一次成功写之后,该文件偏移量增加实际写的字节数。

  • 相关阅读:
    微软外服 AlI In One
    js 循环多次和循环一次的时间的性能对比 All In One
    vue inject All In One
    Excel 表格数据倒置 All In One
    SVG tickets All In One
    OH MY ZSH All In One
    js array for loop performance compare All In One
    mac terminal show You have new mail All In one
    新闻视频 26 制作母版页
    转自牛腩 母版页和相对路径
  • 原文地址:https://www.cnblogs.com/grooovvve/p/14106039.html
Copyright © 2011-2022 走看看