0

我有一个应用程序,想知道我在使用时是否泄漏了文件描述符valgrind -track-fds=yes ./app

我得到:

 ==18807== FILE DESCRIPTORS: 4 open at exit.
 ==18807== Open AF_UNIX socket 20: <unknown>

这被认为是文件描述符泄漏吗?当应用程序终止或Linux内核处理它时,一个关闭的socketPair应该结束吗?

4

2 回答 2

2

通常只有无限的资源损失才被认为是泄漏。

如果您在循环中打开一个文件并且从不关闭它,那么您就有泄漏。泄漏很糟糕,因为您的程序将耗尽它泄漏的任何资源。

如果您打开一个文件一次,那并不算泄漏,特别是如果您需要它到程序的最后。无论如何,它都会被内核自动关闭。

即使只是为了保持 valgrind 日志干净,关闭此类文件也是一个好习惯。

于 2017-04-06T08:30:47.123 回答
1

不,这不是因为文件会自动关闭,而是fclose在退出之前打开文件是一个好习惯。

于 2017-04-06T08:16:43.523 回答