如何查找我的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