Perlプログラムによって開かれたファイルの数を見つける方法は?もちろん、私は次のようなものを使うことができます
scalar( my @a = glob "/proc/$$/fd/*" );
しかし、それは少しハッキーに見えます...私は非常に単純なものを見落とすべきでした。
Perlプログラムによって開かれたファイルの数を見つける方法は?もちろん、私は次のようなものを使うことができます
scalar( my @a = glob "/proc/$$/fd/*" );
しかし、それは少しハッキーに見えます...私は非常に単純なものを見落とすべきでした。
fstat()
call またはcallを使用して、0 から getrlimit(RLIMIT_NOFILE) までのすべての可能なファイル ハンドルをスキャンできますfcntl(fd, F_GETFL)
。
ただし、これらのいずれかを使用すると、単に を見るよりも大幅に遅くなります/proc/self/fd/*
。そして、それらはまだいくつかの Linux 主義に依存しており、プログラムを移植可能にしません。
ここにあるのと同様の質問があります perlプログラムで開いているグローバルファイルハンドルを見つける方法
要件に合わせて少し変更する必要があります
そのために lsof を使用できます。lsof /|wc -l は正常に動作するはずです