2017-04-06 115 views
0

我有一个应用程序,并想知道我是否泄漏文件描述符,当我使用valgrind -track-fds=yes ./app在应用程序退出之前,socketpair端应该关闭吗?

我得到:

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

这被认为是一个文件描述符泄漏?应用程序终止或者Linux内核是否处理完一个close socketPair?

回答

2

通常只有一个无界资源损失被认为是泄漏。

如果您在循环中打开文件并且永远不要关闭文件,则会发生泄漏。泄漏是不好的,因为你的程序会耗尽它泄漏的任何资源。

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

这是一个很好的做法,即使这样的文件关闭,如果只是为了保持你的valgrind日志清洁。

1

不,它不是因为文件被自动关闭,而是在退出之前fclose已打开的文件。

相关问题