`

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");
}


分享到:
评论

相关推荐

    q_dms_chapter02_JAVA源码_

    【压缩包子文件的文件名称列表】"q_dms_chapter02" 没有提供具体的文件名,但通常情况下,这样的命名可能代表“问题-解答-系统”的结构,或者是某个课程或教程的章节编号。"Chapter02"提示这可能是系列教程的一部分...

    Chapter9_E1

    在C#中,文件操作是通过`System.IO`命名空间来实现的。这包括文件的读取、写入、追加等操作。在本案例中,我们主要关注于文件的追加、读取和查找记录。 #### 二、文件流(FileStream) `FileStream`类用于创建或打开...

    vb_IO与存储程序范例(CH5).rar

    Chapter 5可能详细介绍了如何使用VB.NET的IO类进行基本的文件操作,如创建、打开、读取、写入和追加文件。此外,它可能还会涵盖错误处理,如使用Try-Catch块来捕获和处理可能出现的IOExceptions。对于存储程序部分,...

    Chapter10_J

    此外,Java标准库提供了大量的类和接口,如IO流、网络编程、XML处理等。InputStream和OutputStream代表了输入和输出流,它们用于读写文件和网络数据。Socket和ServerSocket类支持网络通信。DOM和SAX是两种解析XML...

    Chapter3IO.rar_Windows编程_Visual_C++_

    本章“Chapter3 IO”可能详细探讨了如何在C++环境中进行文件操作,这对于任何Windows应用程序的开发都至关重要。下面将深入讨论相关知识点。 1. **I/O流库**: C++中的标准模板库(Standard Template Library, STL)...

    C++程序设计教学课件:Chapter 2 IO Streams.ppt

    3. 数据量处理:对于大量数据,文件提供了更高效、方便的管理方式。 文件I/O操作包括读取(read)和写入(write)两个过程。C++中,可以使用`ifstream`类打开并读取文件,`ofstream`类用于创建并写入文件。例如,...

    chapter2.zip一些程序的源代码

    虽然这些文件都是MATLAB格式,而不是Python,但考虑到标签为"py",可能是因为这些MATLAB代码被用作Python编程学习的一个参考点,或者是在Python环境中通过接口(如`scipy.io.loadmat`)进行MATLAB数据的读取和分析。...

    java_chapter09.rar_Java培训教程

    4. **IO流**:Java的IO流库用于读写数据,包括文件操作、网络通信等。第九章可能涵盖了输入输出流的基本概念,如字节流和字符流,以及缓冲流、对象序列化和文件复制等实际应用。 5. **多线程**:Java提供了内置的多...

    Chapter11.rar_文件操作_Java_

    本章“Chapter11”主要探讨了Java中的文件操作以及异常处理,特别是如何自定义异常。让我们深入了解一下这些关键概念。 首先,Java提供了丰富的API来处理文件,主要集中在java.io包中。例如,`File`类用于表示文件...

    C 程序设计教学课件:Chapter 2 IO Streams.ppt

    文件I/O的操作通常包括打开文件(`open()`)、读取文件(如`read()`)、写入文件(如`write()`)、关闭文件(`close()`)等步骤。C++的I/O库还提供了诸如错误检查、流定位和缓冲区管理等功能,以优化文件操作的性能...

    嵌入式系统及应用ucos-Chapter8-IO管理-new.ppt

    《嵌入式系统及应用UCOS-Chapter8-IO管理》是关于嵌入式系统中I/O管理的讲解,主要用于教学参考。I/O管理在任何操作系统中都是至关重要的,因为它负责处理系统与外部设备间的数据交换。在嵌入式系统中,由于资源有限...

    chapter003.zip

    在文件上传和下载的场景中,Java的`java.io`和`java.nio`包提供了基础的文件操作接口和类,如`FileInputStream`和`FileOutputStream`,用于读写文件。此外,`java.net`包中的`Servlet`接口和`HttpServlet`类是处理...

    C# CHAPTER 29例子

    本章的"C#CHAPTER 29例子"着重于展示如何有效地实现这一功能,同时提供了如何显示文件和文件夹信息的示例。下面我们将详细探讨这些知识点。 1. **遍历文件夹**: 在C#中,我们可以使用`System.IO`命名空间中的`...

    jdk6.0从入门到精通-----chapter4--文件目录操作

    3. **文件读写操作** - `FileInputStream`和`FileOutputStream`用于读写二进制数据,如图片、音频等。 - `FileReader`和`FileWriter`处理文本数据,它们默认使用平台的默认字符编码。 - `BufferedReader`和`...

    Python爬虫-笔趣阁小说爬虫-自动爬取小说

    f.write(chapter_text + '\n\n') # 将章节内容写入文件 ``` 除了基本的爬虫逻辑,我们还需要考虑一些实际问题,例如处理反爬策略(如User-Agent和代理IP)、处理JavaScript渲染的内容(可能需要使用Selenium等工具...

    chapter08.rar,chapter08的压缩包

    "chapter08"的压缩包可能包含了一系列的教程文档、代码示例、练习案例,甚至可能是预配置的Tableau工作簿和Java项目文件。解压并深入研究这些资料,将有助于我们系统地掌握Tableau的数据分析技巧和Java的编程技能。...

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

    3. **加载音频数据**:将音频文件从存储器读取到缓冲区,准备播放。 4. **播放控制**:通过改变GPIO状态,启动Codec进行音频数据的解码和播放。 5. **中断处理**:当播放完成或有其他事件发生时,通过中断服务程序...

    chapter7.zip

    本章节我们将深入探讨"chapter7"中的核心概念,这通常涵盖Java编程的高级主题,如多线程、集合框架、IO流以及网络编程等。 首先,多线程是Java中的重要特性,它允许程序同时执行多个任务,提高了程序的效率和响应性...

    java-programming-chapter-interview.zip_java programming

    2. 文件操作:熟练使用File类进行文件的创建、读写和删除。 3. 缓冲流:利用BufferedReader和BufferedWriter提高读写效率。 4. NIO:介绍非阻塞I/O,包括通道(Channel)、缓冲区(Buffer)和选择器(Selector)的...

    Java语言程序设计与数据结构(基础篇)第3章课后习题代码chapter3.rar

    在本资源"Java语言程序设计与数据结构(基础篇)第3章课后习题代码chapter3.rar"中,我们聚焦于Java编程语言与数据结构的基础应用。这章的学习目标主要是理解和掌握Java语言的基本语法以及如何利用数据结构来解决...

Global site tag (gtag.js) - Google Analytics