Как закрыть сокет (), если я использовал fdopen() в дескрипторе сокета

Если я создаю сокет

sockfd = socket(...);

а затем я связываю его с потоком FILE, вызывая

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

Должен ли я позвонить обоим close(sockfd); а также fclose(f); или только close(sockfd);? Что происходит со структурой ФАЙЛ, если я позвоню или нет fclose(f)?

И (самое главное), если я должен назвать их обоих, в каком порядке они должны быть вызваны? Первый close() или же fclose()?

1 ответ

fdopen() оборачивает дескриптор файла в буферизованный io FILE структура, как вы открыли fopen(),

Вы должны только позвонить fclose()это закроет дескриптор файла os и освободит все связанные структуры и буферы!

Другие вопросы по тегам