套接口和标准IO
2008-03-18 19:16
169 查看
Unix的I/O函数包括read, write以及它们的变体recv, send等,这些函数围绕描述字工作。
执行I/O的另一种方法是标准I/O函数库,这个函数库由ANSI C标准规范,这些函数通常围绕流工作。
1,流和描述字的转换
1)流转换为描述字 int fileno(FILE*);
2)描述字转换为输出流和输入流。 FILE* fdopen(sockfd, 'w'); FILE* fdopen(sockfd, 'r');
2,使用标准IO可以对描述字进行操作,方法是先把描述字转换为IO流,然后对IO流进行操作。
3,存在问题
标准IO流是有缓冲的,所以使用标准IO流来操作描述字可能不会立即对数据进行写入和读出。标准IO流有以下三类缓冲:
1)完全缓冲 只有在下列情况才发生IO:缓冲区满,调用fflush,调用exit终止进程。缓冲区的通常大小为8192字节。
2)行缓冲 只有在下列情况才发生IO:碰到换行符,调用fflush,调用exit终止进程。
3)不缓冲 意味着每次调用标准IO输出函数都发生IO
标准IO在Unix上的实现使用如下规则:
1,标准错误输出不缓冲
2,标准输入输出完全缓冲,除非指代终端设备,这种情况为行缓冲。
3,其他IO流都是完全缓冲的,除非指代终端设备,这种情况为行缓冲。
执行I/O的另一种方法是标准I/O函数库,这个函数库由ANSI C标准规范,这些函数通常围绕流工作。
1,流和描述字的转换
1)流转换为描述字 int fileno(FILE*);
2)描述字转换为输出流和输入流。 FILE* fdopen(sockfd, 'w'); FILE* fdopen(sockfd, 'r');
2,使用标准IO可以对描述字进行操作,方法是先把描述字转换为IO流,然后对IO流进行操作。
3,存在问题
标准IO流是有缓冲的,所以使用标准IO流来操作描述字可能不会立即对数据进行写入和读出。标准IO流有以下三类缓冲:
1)完全缓冲 只有在下列情况才发生IO:缓冲区满,调用fflush,调用exit终止进程。缓冲区的通常大小为8192字节。
2)行缓冲 只有在下列情况才发生IO:碰到换行符,调用fflush,调用exit终止进程。
3)不缓冲 意味着每次调用标准IO输出函数都发生IO
标准IO在Unix上的实现使用如下规则:
1,标准错误输出不缓冲
2,标准输入输出完全缓冲,除非指代终端设备,这种情况为行缓冲。
3,其他IO流都是完全缓冲的,除非指代终端设备,这种情况为行缓冲。
相关文章推荐
- 套接口和标准io
- IO接口,序列化,标准传输格式JSON
- IO接口标准(3):HCSL和LPHCSL
- 【linux草鞋应用编程系列】_1_ 开篇_系统调用IO接口与标准IO接口
- JavaIO之标准输入输出(二)
- C++重载输入和输出操作符以及IO标准库中的刷新输入缓冲区残留字符问题
- 修改标准Script的接口
- 【linux开发】IO端口和IO内存的区别及分别使用的函数接口
- 黑马程序员——JAVA基础——IO(一)---流概述,节点流、处理流、转换流与标准输入输出流、打印流、File文件对象、合并流
- java nio 传统标准io socket 和nio socket比较与学习
- linux 标准i2c接口(一)
- 第一部分 标准IO及文件IO(第3章 文件与目录)
- JavaLearning:接口 定义标准。抽象类定义模板
- 几种硬盘接口标准
- 【Java TCP/IP Socket】Java NIO Socket VS 标准IO Socket
- 标准IO与文件IO 的区别
- 使用Colseable接口封装流关闭工具类IOClose
- [置顶] 内核态与用户态、系统调用与库函数、文件IO与标准IO、缓冲区等概念介绍
- NGFF接口标准, 或在今年大放异彩
- DVI-A、DVI-D、DVI-I接口定义、DVI接口图和DVI接口标准介绍