如何查找我的Perl程序打開的文件數量?當然,我可以使用像如何獲取打開文件描述符的數量?
scalar(my @a = glob "/proc/$$/fd/*");
但它看起來有點哈克...我應該忽略了一些非常簡單的東西。
如何查找我的Perl程序打開的文件數量?當然,我可以使用像如何獲取打開文件描述符的數量?
scalar(my @a = glob "/proc/$$/fd/*");
但它看起來有點哈克...我應該忽略了一些非常簡單的東西。
也有同樣的問題,在這裏 How to find open global filehandles in a perl program
你需要改變它有點滿足您的要求
你可以使用lsof的,以該如。 lsof的/ | WC -l應該可以正常工作
AFAIK'lsof'在內部使用/ proc/*/fd,所以它通常是一樣的......哦,我需要_this_進程打開的文件,而不是其他人。 – Dallaylaen
我編輯了摘要。 – Dallaylaen
您可以使用fstat()
通話或通話fcntl(fd, F_GETFL)
掃描所有可能的文件從0到處理對getrlimit(RLIMIT_NOFILE)。
但是,使用這些中的任何一個都會比僅僅查看/proc/self/fd/*
慢得多。而且,它們仍然依賴於一些Linux主題,並且不會讓程序變得輕便。
所選答案有我的問題代碼...看起來像案件關閉。 – Dallaylaen
很高興能有一些幫助。 – Ahmad