zoukankan      html  css  js  c++  java
  • Unix高级编程之文件IO

    文件io---低级io

    特点:
    不带缓存io
    优点:
    实时性高

    1.io基本操作
    文件描述符:文件io打开文件的标识
    非负整型数,是内核为打开文件维护结构的数组下标
    默认最多能打开1024文件

    stdin-----0
    stdout-----1
    stderr-----2
    函数:
    open(2);
    read(2);
    write(2);
    lseek(2);
    <1>允许偏移的字节个数大于文件本身
    <2>lseek()本身不进行读写操作
    空洞文件
    空洞文件本身不占用磁盘空间

    close(2);

    写一段代码,验证一个进程最多能打开多少个文件?
    1021

    2.文件的共享
    dup(2);
    dup2(2);

    3.i/o效率
    不带缓存,用户所指定的缓存区的大小就会影响io效率
    并不是缓存区越大效率越高
    推荐4096

    4.原子操作
    操作不能被分割(打断)
    tmpfile();---->原子
    tmpname()+creat();---->不原子

    dup2();---->原子
    close()+dup()---->不原子

    5.刷新内核缓存
    sync(2);//刷新缓存区到内核io队列,不阻塞
    fsync(2);//阻塞,直到文件的数据和inode信息全部刷新在磁盘空间才会返回
    fdatasync(2);//阻塞,只是文件的数据刷新在磁盘空间才会返回

    6.fcntl(2);
    <1>复制文件描述符
    <2>改变文件描述符标识
    <3>改变文件状态标识
    <4>文件锁
    <5>记录锁
    ioctl();

    有时候,不小心知道了一些事,才发现自己所在乎的事是那么可笑。
  • 相关阅读:
    window
    pages
    百度小程序 配置 app.json 文件
    JavaScript Cookie
    jQuery ajax
    jQuery ajax
    jQuery ajax
    jQuery
    jQuery
    jQuery
  • 原文地址:https://www.cnblogs.com/axjlxy/p/5859932.html
Copyright © 2011-2022 走看看