Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我注意到在 fd 泄漏期间,当达到文件描述符的上限时,重命名调用失败。不幸的是,我没有错误代码。
缺少文件描述符是否可能与重命名失败有关?
据我所见,在 rename() 的实现中使用了 link() 系统调用。需要fd吗?
使用的重命名实现来自 \glibc-2.17\sysdeps\posix\
我编译了这个程序:
#include <stdio.h> int main() { rename("a", "a1"); }
并strace在可执行文件上运行。初始化代码完成后,所发生的一切是:
strace
rename("a", "a1") = 0 exit_group(0) = ?
即没有对open新文件描述符的系统调用。
open
的故障模式rename在手册页上清楚地列出:
rename
http://www.manpagez.com/man/2/rename/
它没有提到太多打开的文件是一个问题。