如果没有足够的文件描述符,可以重命名失败



我注意到在fd泄漏期间,当达到文件描述符的上限时,重命名调用失败。不幸的是,我没有错误代码。

缺少文件描述符是否可能与重命名失败有关?

据我所知,rename()的实现中使用了link()系统调用。它需要fd吗?

使用的rename的实现来自glibc-2.17sysdepsposix

我编译了这个程序:

#include <stdio.h>
int main()
{
    rename("a", "a1");
}

并在可执行文件上运行strace。一旦初始化代码完成,所发生的就是:

rename("a", "a1")                       = 0
exit_group(0)                           = ?

。没有系统调用open新文件描述符

手册页明确列出了rename的失效模式:

http://www.manpagez.com/man/2/rename/

它没有提到打开太多文件是一个问题

最新更新