最新消息:

Linux Socket 学习笔记16-套接口上的标准I/O

IO admin 2857浏览 0评论

采用标准的I/O可以增强程序的可移植性,可以提高程序的性能.

fdopen(3)可以为套接口打开stdio(3)调用.

#include
FILE fdopen(int files,const char *mode);

files为文件描述符,mode为打开的模式.与函数fopen中的模式一样.
如果调用成功返回一个FILE结构指针,否则返回一个空指针,错误信息在errno中.

下面是一个示例:

1
2
3
4
5
6
7
8
9
int s;
FILE *io;
s=socket(...);
io=fdopen(s,"w+");
if(io==NULL)
{
fprintf(stderr,"%s:fdopenn",strerror(errno));
exit(1);
}

一般情况下为了让程序更加安全个高效,常常采用分开使用读写流的方式.

下面是一个示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int s;
FILE *rx;//读流
FILE *wx;//写流
s=socket(...);
rx=fdopen(s,"r");
if(rx==NULL)
{
........
}
wx=fdopen(dup(s),"r");
if(wx==NULL)
{
........
}

建立两个流后,用户就可以安全的在rx流上使用fgetc()和fgets()等输入函数,在wx流上使用fputc()和fpuuts()等输出函数.
当不再使用时就调用fclose()关闭这些流.

转载请注明:爱开源 » Linux Socket 学习笔记16-套接口上的标准I/O

您必须 登录 才能发表评论!