2

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

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

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

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

4

2 回答 2

2

我编译了这个程序:

#include <stdio.h>

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

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

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

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

于 2013-03-13T10:11:18.697 回答
1

的故障模式rename在手册页上清楚地列出:

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

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

于 2013-03-13T10:09:56.857 回答