void str_echo( int sockfd)
{
char line[MAXLINE];
FILE *fpin, *fpout;
fpin = fdopen(sockfd,"r"); //创建两个标准I/O流用于输入
fpout = fdopen(sockfd,"w"); //用于输出
while(fgets(line, MAXLINE, fpin) != NULL)
fputs(line, fpout);
}
发送过来的数据被放入缓冲区中,但不把缓冲区内容写到描述字中,直到缓冲区满
或遇到文件尾。
因为标准I/O函数库自动执行的缓冲机制:
1,完全缓冲(fully buffering):发生I/O情况:缓冲区满, 进程显示调用
fflush, 进程调用exit终止自身。 通常其大小为8192.
2,行缓冲(line buffering):发和I/O情况:碰到一个换行符,进程调用fflush
或者调用exit终止自身。
3,不缓冲(unbuffering):只要每次调用I/O输出函数都发生I/O.
约定: 标准错误输出总是不缓冲
标准输入和标准输出完全缓冲,除非它们指代终端设备,此时,是行缓冲。
所有其它I/O流都是完全缓冲,除非它们指代终端设备(行缓冲)。
套接口和标准I/O例子
原创
©著作权归作者所有:来自51CTO博客作者noyear的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:make笔记
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
网编(14):套接字和标准I/O
标准I/O函数的优点标准I/O函数具有良好的移植性( PortabiJity )。 标准I/O函数可以利用缓冲提高性能。
#include 文件描述符 结构体指针 -
标准I/O操作
标准I/O操作 的各种函数 介绍
标准 操作 -
标准I/O缺陷
标准I/O缺陷
linux配置 可变参数 行缓冲 -
标准I/O和文件I/O的区别linux 嵌入式 缓存 系统调用 读写文件