У вас есть две вещи, которые вам нужно очистить: поток, представленный FILE
, и дескриптор файла, представленный сокетом. Сначала нужно закрыть поток, затем дескриптор файла. Таким образом, в общем случае вам потребуется fclose()
любых FILE
объектов, а затем close()
любых файловых дескрипторов.
Лично я никогда не использовал shutdown()
, когда хочу убрать за собой, поэтому не могу сказать.
1010 * редактировать *
Другие правильно указали, что fdclose()
также закроет базовый файловый дескриптор, и поскольку вызов close()
для закрытого файлового дескриптора приведет к ошибке, в этом случае вам нужен только fdclose()
.