【问题标题】:Should the socketpair ends be closed before application exits?在应用程序退出之前应该关闭套接字对吗?
【发布时间】:2017-09-01 03:26:54
【问题描述】:

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

我明白了:

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

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

【问题讨论】:

    标签: c valgrind socketpair


    【解决方案1】:

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

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

    如果您打开一个文件一次,这并不算泄漏,尤其是当您在程序的最后需要它时。无论如何它都会被内核自动关闭。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-06-18
        • 2023-03-12
        • 1970-01-01
        • 2011-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-17
        相关资源
        最近更新 更多