如何查找我的 Perl 程序打开的文件数?当然,我可以使用类似的东西
scalar( my @a = glob "/proc/$$/fd/*" );
但它看起来有点hacky......我应该忽略一些非常简单的东西。
如何查找我的 Perl 程序打开的文件数?当然,我可以使用类似的东西
scalar( my @a = glob "/proc/$$/fd/*" );
但它看起来有点hacky......我应该忽略一些非常简单的东西。
fstat()
您可以使用call 或call扫描从 0 到 getrlimit(RLIMIT_NOFILE) 的所有可能的文件句柄fcntl(fd, F_GETFL)
。
但是,使用其中任何一个都将比简单地查看/proc/self/fd/*
. 而且,它们仍然依赖于某些 Linux 主义,并且不会使您的程序具有可移植性。
这里有一个类似的问题 How to find open global filehandles in a perl program
您需要对其进行一些更改以满足您的要求
你可以使用 lsof 来实现,例如。lsof /|wc -l 应该可以正常工作