`

Chapter 3__文件IO

    博客分类:
  • APUE
 
阅读更多

无聊,贴些本章的关键字:
一、空洞文件、预读技术(read ahead)、缓冲
二、进程表->打开的文件描述符表->文件表
三、文件状态标志、文件偏移量、v与i节点表

四、多函数操作,都不可能是原子操作。

五、延迟写->减少物理IO->降低文件更新速度->数据丢失危险增大


关键函数:
open - close
read - write  (内核级无缓冲)
creat
lseek

pread - pwrite
dup、dup2

sync   不等待
fsync 等待
fdatasync  类fsync,但只影响文件数据,不影响文件属性

fcntl 改变句柄性质
ioctl 


系统命令:
od、dd


int fcntl(int filedes, int cmd, .../* int arg */);
int fcntl(int filedes, int cmd, .../* struct flock *flockptr */); //记录锁

fcntl函数有5种功能:
1)复制一个现有的描述符(cmd = F_DUPFD)
2)get/set文件描述符标记(cmd = F_GETFD / F_SETFD)
3)get/set文件状态标志(cmd = F_GETFL / F_SETFL)
4)get/set异步I/O所有权(cmd = F_GETOWN / F_SETOWN)
5)get/set记录锁(cmd = F_GETLK / F_SETLK / F_SETLKW)



#include <fcntl.h>
void set_fl(int fd, int flags);
void clr_fl(int fd, int flags);

void set_fl(int fd, int flags)  //  void clr_fl(int fd, int flags)
{
    int val;
    if ((val = fcntl(fd, F_GETFL, 0)) < 0)
        printf("fcntl F_GETFL error");

    val |= flags;
    //  val &= ~flags;   //

    if (fcntl(fd, F_SETFL, val) < 0)
        printf("fcntl F_SETFL error");
}


分享到:
评论

相关推荐

    Chapter 6 通用IO模块:语音播放系统设计.rar

    Chapter 6 通用IO模块:语音播放系统设计.rar Freescale系列单片机常用模块与综合系统设计实例精讲CD光盘\素材文件

    Chapter 5 通用IO模块:流水灯设计.rar

    Freescale系列单片机常用模块与综合系统设计实例精讲CD光盘\素材文件

    vc实例精通源码,windows基本控件的使用Demo

    示例描述:本章学习使用VC6进行文件IO开发的技巧。 01_BinaryView 用基本API编写二进制编辑器。 02_MyCompressor 用MFC类编写文件压缩软件。 03_DirMonitor 监控硬盘上文件的变化。 04_HddSpace 获取本机...

    每日选修课:用于查阅和阅读ACNA每日选修课经文的工具

    https://www.lectserve.com/date/yyyy-mm-dd 音频文件路径https://dbt.io/audio/path?key=&lt;access&gt;&dam_id=ENGESVN2DA&book_id=John&chapter_id=1&v=2 获取John 1 MP3文件的相对路径。诗句时间码列表...

    transpect.github.io:透视github.io页面

    Transpect.github.ioHTML页面是使用基于XSLT / XProc的脚本从存储内容的原始DocBook文件中自动生成的。 DocBook XML被拆分为多个块,然后转换为HTML。 每个HTML块都插入到HTML模板中,该模板使用Materialize CSS...

    C#使用文件流读取文件的方法

    本文实例讲述了C#使用文件流读取文件的方法。分享给大家供大家参考。具体如下: using System; using System.IO; namespace Client.Chapter_11___File_and_Streams { public class OpenExistingFile { static ...

    《Linux系统编程、网络编程》 第9章 高级IO

    课程内容:1.非阻塞IO 如何将阻塞的读写设置为非阻塞的读写。2.文件锁 1)使用fcntl函数实现 2)使用flock函数实现3.多路IO select方式,poll方式。 4.异步IO5.存储映射

    C#创建PDF文件一例

    using System.IO; using iTextSharp.text; using iTextSharp.text.pdf; public class Chap0101 { public static void Main() { Console.WriteLine("Chapter 1 example 1: Hello World"); // step 1: ...

    GuanN1ng.github.io

    杰基尔主题留声机 欢迎使用您的新Jekyll主题!...* layout: chapter 带红色*的版式依赖于jekyll书籍生成器插件: 安装 将此行添加到您的Jekyll网站的Gemfile : gem "jekyll-theme-persephone" 并将此行

    tpjz.github.io:个人博客

    让我们听听乔说的 欢迎使用您的新Jekyll主题!...* layout: chapter演示 带红色*的版式依赖于jekyll书籍生成器插件: jekyll-books 安装 将此行添加到您的Jekyll网站的Gemfile : gem "jekyll-them

    umi0410.github.io:Web产品组合和博客。 后端开发工程师Jinsu Park(umi0410)

    $ hugo new --kind chapter {{ * .md_FILE_REL_PATH_ABOUT_/content/}} 设置草稿:.Page.Params中为true时,可以通过hugo serve -D以草稿状态查看为开发(草稿)编写的文章。 部署自动化 在branch:master写一个...

    Java学习笔记-个人整理的

    {3}常用类}{67}{chapter.3} {3.1}Object类}{67}{section.3.1} {3.1.1}\ttfamily toString}{67}{subsection.3.1.1} {3.1.2}\ttfamily equals}{67}{subsection.3.1.2} {3.1.3}\ttfamily hashCode}{68}{subsection...

    spring源代码

    //3.通过虚拟目录获取文件资源 VirtualFile testFile = home.getChild("test.txt"); ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); Resource[] resources = resolver....

    Magento-2-Theme-Design:Packt发布的Magento 2主题设计的代码存储库

    它包含从头到尾完成本书所必需的所有支持项目文件。 ##说明和导航所有代码都组织在文件夹中。 每个文件夹均以数字开头,后跟应用程序名称。 例如,Chapter02。 该代码将如下所示: &lt;?php \Magento\Framework\...

    quarkus-native-apps

    如果您想了解更多有关Quarkus的信息,请访问其网站: ://quarkus.io/。 在开发人员模式下运行应用程序 在Ubuntu上必须安装 sudo apt-get install build-essential sudo sudo apt-get install zlib1g-dev 您可以在...

    最新go语言中文教程及手册(强烈推荐)

    ii Chapter: Contents 转换. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 练习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...

Global site tag (gtag.js) - Google Analytics