套接字对端是否应该在应用程序退出之前关闭?
Should the socketpair ends be closed before application exits?
我有一个应用程序,想知道我在使用 valgrind -track-fds=yes ./app
时是否泄漏了文件描述符
我得到:
==18807== FILE DESCRIPTORS: 4 open at exit.
==18807== Open AF_UNIX socket 20: <unknown>
这是否被视为文件描述符泄漏?一个关闭的 socketPair 应该在应用程序终止时结束还是 Linux 内核会处理它?
不,这不是因为文件会自动关闭,但在退出前 fclose
打开文件是一个好习惯。
通常只有无限制 资源丢失才被认为是泄漏。
如果您循环打开一个文件并且从不关闭它,那么您就有了泄漏。泄漏很糟糕,因为您的程序将 运行 耗尽它泄漏的任何资源。
如果您只打开一个文件一次,那么就不算泄漏,尤其是当您需要它到程序的最后时。无论如何它都会被内核自动关闭。
即使只是为了保持您的 valgrind 日志干净,关闭此类文件也是一种很好的做法。
我有一个应用程序,想知道我在使用 valgrind -track-fds=yes ./app
我得到:
==18807== FILE DESCRIPTORS: 4 open at exit.
==18807== Open AF_UNIX socket 20: <unknown>
这是否被视为文件描述符泄漏?一个关闭的 socketPair 应该在应用程序终止时结束还是 Linux 内核会处理它?
不,这不是因为文件会自动关闭,但在退出前 fclose
打开文件是一个好习惯。
通常只有无限制 资源丢失才被认为是泄漏。
如果您循环打开一个文件并且从不关闭它,那么您就有了泄漏。泄漏很糟糕,因为您的程序将 运行 耗尽它泄漏的任何资源。
如果您只打开一个文件一次,那么就不算泄漏,尤其是当您需要它到程序的最后时。无论如何它都会被内核自动关闭。
即使只是为了保持您的 valgrind 日志干净,关闭此类文件也是一种很好的做法。