采用标准的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