zoukankan      html  css  js  c++  java
  • APUE(3)——文件I/O

    大多数情况下,我们都会利用Standard I/O Library来进行I/O操作,而这一章所讲的I/O是UNIX系统直接提供的I/O操作,且大多是Unbuffered I/O,即每一次读或写都会出现一次系统调用。

    1、打开文件

    #include <fcntl.h>
    
    int open(const char *pathname, int oflag, .../* mode_t mode */);

    参数oflag有多个选择如O_RDONLY(只读), O_WRONLY(只写), O_RDWR(读写), O_APPEND(每次写都写在文件的最后), O_CREAT(文件不在时创建)......其中前三个必选一个,其余可挑选。多个oflag参数用|分开,如:

    open(pathname, O_RDWR | O_CREAT | O_TRUNC, mode);

    第三个参数用“...”表示剩下的参数数目和类型可变,事实上只有当文件被创建的时候,参数mode才会有意义,它决定新文件的属性。

    2、创建文件

    #include <fcntl.h>
    
    int creat(const char *pathname, mode_t mode);

    当创建新文件的同时也会把该文件打开,并且以只写的方式打开,等价于:

    open(pathname, O_WRONLY | O_CREAT | O_TRUNC, mode);

    这样当我们要对新文件既读又写的时候,只能依次调用creat,close,open。因此当我们需要对新文件既读又写的时候,常常会用到以下方式代替:

    open(pathname, O_RDWR | O_CREAT | O_TRUNC, mode);

    3、lseek

    每个打开的文件都会有一个当前偏移量来衡量当前处于距离文件开头的哪个位置。


  • 相关阅读:
    多项式模板整理
    广大附中2019CSP模拟day6
    2019正睿CSP-S模拟赛十连测day6
    NOIP2020 游记
    NOI2020 退役记
    CSP2019 退役记
    目录
    NOI Online 提高
    后缀数组
    待学
  • 原文地址:https://www.cnblogs.com/bgmind/p/3946106.html
Copyright © 2011-2022 走看看