2017-04-06 82 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已打開的文件。

相關問題