假设我有一个打开文件的列表(实际上是文件编号):
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 是一个整数。它不是文件描述符。很抱歉让您与名称混淆,但代码是不言自明的。
编辑2
我对此感到愤怒,我认为是因为我选择了fd
表示文件号。我刚刚检查了文档:
该模块中的所有函数都将文件描述符 fd 作为其第一个参数。这可以是一个整数文件描述符,例如由 sys.stdin.fileno() 返回,也可以是一个文件对象,例如 sys.stdin 本身,它提供了一个返回真正文件描述符的 fileno()。
所以fd
确实是一个整数。它也可以是一个文件对象,但在一般情况下,fd
它不是.name
.