我有一個應用程序,並想知道我是否泄漏文件描述符,當我使用valgrind -track-fds=yes ./app
在應用程序退出之前,socketpair端應該關閉嗎?
我得到:
==18807== FILE DESCRIPTORS: 4 open at exit.
==18807== Open AF_UNIX socket 20: <unknown>
這被認爲是一個文件描述符泄漏?應用程序終止或者Linux內核是否處理完一個close socketPair?
我有一個應用程序,並想知道我是否泄漏文件描述符,當我使用valgrind -track-fds=yes ./app
在應用程序退出之前,socketpair端應該關閉嗎?
我得到:
==18807== FILE DESCRIPTORS: 4 open at exit.
==18807== Open AF_UNIX socket 20: <unknown>
這被認爲是一個文件描述符泄漏?應用程序終止或者Linux內核是否處理完一個close socketPair?
通常只有一個無界資源損失被認爲是泄漏。
如果您在循環中打開文件並且永遠不要關閉文件,則會發生泄漏。泄漏是不好的,因爲你的程序會耗盡它泄漏的任何資源。
如果你打開一個文件一次,這不是一個泄漏,特別是如果你需要它到程序的最後。無論如何,它將被內核自動關閉。
這是一個很好的做法,即使這樣的文件關閉,如果只是爲了保持你的valgrind日誌清潔。
不,它不是因爲文件被自動關閉,而是在退出之前fclose
已打開的文件。