您的位置:首页 > 其它

套接口和标准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流都是完全缓冲的,除非指代终端设备,这种情况为行缓冲。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: