如果我在套接字描述符上使用fdopen(),如何关闭套接字()

时间:2019-02-07 00:13:40

标签: c++ sockets fclose fdopen

如果我创建一个套接字

sockfd = socket(...);

然后我通过调用将其关联到FILE流

FILE* f=fdopen(sockfd,"r+");

我应该同时呼叫close(sockfd);fclose(f);还是只呼叫close(sockfd);?如果我不叫fclose(f),FILE结构会怎样?

(最重要的),如果我要同时调用它们,则必须按什么顺序调用它们?前close()fclose()

1 个答案:

答案 0 :(得分:1)

fdopen()将文件描述符包装到一个缓冲的io FILE结构中,就像用fopen()打开它一样。

您只应调用fclose(),这将关闭os文件描述符并释放所有关联的结构和缓冲区!