開いているファイルのリスト(実際にはファイル番号)があるとしましょう:
import resource
import fcntl
def get_open_fds():
fds = []
soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
for fd in range(3, soft):
try:
flags = fcntl.fcntl(fd, fcntl.F_GETFD)
except IOError:
continue
fds.append(fd)
return fds
次に、それらのファイルの名前を取得したいと思います。これどうやってするの?
編集
明確にするために、これに反対票を投じる人のために:fdは整数です。これはファイル記述子ではありません。名前と混同して申し訳ありませんが、コードは一目瞭然です。
EDIT2
私はこれについて怒り狂っています、私fd
はファイル番号を意味することを選択したためだと思います。ドキュメントを確認しました:
このモジュールのすべての関数は、最初の引数としてファイル記述子fdを取ります。これは、sys.stdin.fileno()によって返されるような整数のファイル記述子、または本物のファイル記述子を返すfileno()を提供するsys.stdin自体などのファイルオブジェクトにすることができます。
確かfd
に整数です。ファイルオブジェクトにすることもできますが、通常はそうでfd
はありません.name
。