我運行下面的代碼時得到一個文件描述符泄漏:猛砸文件描述符泄漏
function get_fd_count() {
local fds
cd /proc/$$/fd; fds=(*) # avoid a StackOverflow source colorizer bug
echo "${#fds[@]}"
}
function fd_leak_func() {
while : ; do
echo ">> Current FDs: $(get_fd_count)"
read retval new_state < <(set +e; new_state=$(echo foo); retval=$?; printf "%d %s\n" $retval $new_state)
done
}
fd_leak_func
測試兩個3.2.25和4.0.28。
這隻發生在函數內發生循環時;每次我們返回到頂級上下文時,額外的文件描述符都會關閉。
這是預期的行爲?更重要的是,是否有解決方法?
跟進:在報告給bash-bug郵件列表後,這被確認爲一個錯誤。切特表示,下一個版本將包含修復(截至2010年4月17日)。
即使是更加怪異的,如果我在循環的末尾放置了一個'true',它會繼續上升,但是放置一個'/ bin/true'會保持它的水平爲5 – 2010-04-15 23:17:40
報告它使用'bashbug'程序給新聞組,看看維護者Chet Ramey怎麼說的。 – 2010-04-16 00:40:05
仍然在CentOS 6 bash 4.1.2(1) - 泄漏中泄漏。 – clacke 2013-03-04 08:52:59