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

How to close a socket() if I used fdopen() on the socket descriptor

本文关键字:套接字 fdopen 何关闭 描述 如果      更新时间:2023-10-16

如果我创建一个套接字

sockfd = socket(...);

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

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

我应该同时打电话给close(sockfd);fclose(f);还是只打电话close(sockfd);?如果我调用或不调用fclose(f),文件结构会发生什么?

而且(最重要的是(,如果我应该称呼他们两个,他们必须按什么顺序称呼?第一close()还是fclose()

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

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