我注意到在fd泄漏期间,当达到文件描述符的上限时,重命名调用失败。不幸的是我没有错误代码。
缺少文件描述符是否可能与重命名失败有关?
据我所知,在rename()的实现中使用了link()系统调用。它需要fd吗?
使用重命名的实现来自\ glibc-2.17 \ sysdeps \ posix \
答案 0 :(得分:2)
我编译了这个程序:
#include <stdio.h>
int main()
{
rename("a", "a1");
}
并在可执行文件上运行strace
。初始化代码完成后,所有发生的事情都是:
rename("a", "a1") = 0
exit_group(0) = ?
即。没有系统调用open
个新文件描述符。
答案 1 :(得分:1)