第十六章 关于I/O流分离的其他内容
来源:互联网 发布:openwrt mac地址 编辑:程序博客网 时间:2024/05/17 23:02
P255~P264
调用fopen函数打开文件后可以与文件交换数据,说明调用fopen函数后创建了“流”Stream。 此处的流是指“数据流动”,通常可以比喻成“以数据收发为目的的一种桥梁”。即数据收发路径、
分离I/O流
2次I/O流分离
2种方法分离I/O流:第一种是TCP I/O过程Routine分离(通过调用fork函数复制出1个文件描述符,以区分输入和输出中使用的文件描述符) 第十章 多进程服务器(下)
第二种是 通过2此fdopen函数调用,创建读模式FILE指针(FILE结构体指针)和写模式FILE指针。 第十五章 套接字和标准I/O
分离“流”的好处
第十章的“流”分离目的:
通过分开输入过程(代码)和输出过程降低实现难度
与输入无关的输出操作可以提高速度
第十五章“流”分离的目的:
为了将FILE指针按读模式和写模式加以区分
可以通过区分读写模式降低实现难度
通过区分I/O缓冲提高性能
流分离带来的EOF问题
第七章介绍过EOF的传递方法和半关闭的必要性。第七章 优雅地断开套接字连接 ,其中 shutdown(sock, SHUT_WR);这个函数是基于半关闭的EOF传递方法。第十章的”流“分离没有问题。但第十五章的基于fdopen函数的流问题则不同,还不知道这种情况下如何进行半关闭。
文件描述符的复制和半关闭
终止”流“时无法半关闭的原因 (P259~P260重点阅读)
复制文件描述符
调用fork函数时将复制整个进程,因此同一进程内不能同时有原件和副本。
同一进程内存在2个文件描述符可以同时访问文件。文件描述符的值不能重复,因此各使用一个整数值。此处的复制,”为了访问同一文件或套接字,创建另一个文件描述符“。
dup & dup2
#include<unistd.h>int dup(int fildes);int dup2(int fildes,int fildes2);成功时返回复制的文件描述符,失败时返回-1.
fildes:需要复制的文件描述符
fildes2:明确指定的文件描述符整数值
dup2函数明确指定复制的文件描述符整数值。向其传递大于0且小于进程能生成的最大文件描述符时,该值将成为复制出的文件描述符值。
复制文件描述符”流“的分离
无论复制出多少文件描述符,均应调用shutdown函数发送EOF并进入半关闭状态。
- 第十六章 关于I/O流分离的其他内容
- I/O其他流
- 第十六章 非阻塞I/O
- 关于I/O流中输入输出过程中利用装饰器所需了解的内容
- 关于I/O流的类分析
- 文件和流 I/O包含的内容
- UNP学习笔记(第十六章 非阻塞I/O)
- UNP第十六章 非阻塞式I/O
- TCP/IP网络编程 基于Linux编程_2 --I/O流分离的半关闭问题
- I/O知识集--1 关于I/O的基础知识
- 关于i/o端口和i/o内存的区别
- socket的overlapped(重叠) I\O和其他socket I\O模型的区别
- 关于Java中的I/O流的总结
- Java-I/O操作之字符流、其他常用流
- Java学习之I/O中的其他功能流
- 关于I/O的一些脚本
- 关于I/O操作的一点整理
- Java关于文件I/O的事例
- 导入模块
- 正则表达式
- codevs1515 瞎搞+Lucas
- 编程练习3——01
- Xutils
- 第十六章 关于I/O流分离的其他内容
- 链栈
- 按快捷键进不去bios问题解决
- Spark执行原理解惑
- 虚拟内存
- Docker学习笔记1:入门使用
- C语言排序原理及其分析
- 编程练习3——02
- NOIP2013 火柴排队