Должны ли концы сокет-пары закрываться до выхода из приложения?
У меня есть приложение, и я хотел бы узнать, если я утечки файловых дескрипторов, когда я использую valgrind -track-fds=yes ./app
Я получил:
==18807== FILE DESCRIPTORS: 4 open at exit.
==18807== Open AF_UNIX socket 20: <unknown>
Считается ли это утечкой файлового дескриптора? Стоит ли закрывать socketPair после завершения работы приложения или ядро Linux позаботится об этом?
2 ответа
Обычно только неограниченная потеря ресурсов считается утечкой.
Если вы открываете файл в цикле и никогда не закрываете его, у вас есть утечка. Утечки плохи, потому что ваша программа исчерпает любой ресурс, из которого она вытекает.
Если вы открываете файл один раз, это не такая большая утечка, особенно если вам это нужно до самого конца программы. В любом случае оно будет автоматически закрыто ядром.
Хорошей практикой является закрытие даже таких файлов, хотя бы просто для того, чтобы сохранить ваш журнал valgrind в чистоте.
Нет, это не потому, что файлы автоматически закрываются, но это хорошая практика fclose
открытые файлы перед выходом.