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

时间:2013-03-13 10:00:17

标签: c linux rename glibc

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

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

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

使用重命名的实现来自\ glibc-2.17 \ sysdeps \ posix \

2 个答案:

答案 0 :(得分:2)

我编译了这个程序:

#include <stdio.h>

int main()
{
    rename("a", "a1");
}

并在可执行文件上运行strace。初始化代码完成后,所有发生的事情都是:

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

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

答案 1 :(得分:1)

rename的失败模式清楚地列在手册页上:

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

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