我有一个插座sock:
int sock = socket(...);
connect(sock, ...);
// or sock = accept(sock_listen, 0, 0);
并且我用fdopen打开了两次,这样我就可以使用缓冲的读写器了,stdio比如fwrite,,和。freadfgetsfprintf
FILE *f_recv = fdopen(sock, "wb");
FILE *f_send = fdopen(sock, "rb");
// some IO here.
close(sock);
fclose(f_recv);
fclose(f_send);
但是我们知道,如果我fclose是一个文件,aclose将随后被调用,并且fclose会失败。
如果我只使用close, struct 的内存FILE就会泄露。
如何正确关闭它?
更新:
使用fdopen一次与"r+"使读取和写入共享同一个锁,但我除了发送和接收单独工作。