• 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选项,则在每次写操作之前,将文件偏移量设置在文件的当前结尾处。在一次成功写之后,该文件偏移量增加实际写的字节数。

  • 相关阅读:
    2021寒假每日一题《棋盘挑战》
    2021寒假每日一题《货币系统》
    2021寒假每日一题《红与黑》
    2021寒假每日一题《字母图形》
    2021寒假每日一题《完全背包问题》
    2021寒假每日一题《找硬币》
    python 迭代器和生成器
    python for循环
    python集合
    python字符串常用操作
  • 原文地址:https://www.cnblogs.com/grooovvve/p/14106039.html
Copyright © 2020-2023  润新知