是否无法自动取消目录与其父级索引节点的链接?这背后有什么历史原因吗?
答案1
int rmdir(const char *pathname);
是一个系统调用,符合 POSIX.1-2001。现在想象一下这样一种情况,您希望此系统调用不只删除单个目录,而是删除其中的所有子目录和文件。
- 您必须将此逻辑添加到内核中,这不是一件容易的事,这样做会使内核膨胀
- 该操作在执行时间方面变得不确定
- 有很多种方法可能会导致处理失败,而这些方法在内核中没有多大意义。
答案2
这是一个功能,不是一个缺陷!
人们可以使用 轻松删除空目录rmdir *
,同时保留非空目录。这是我经常使用的系统管理实践。
有rm -rf
删除整个目录树(所有文件和子目录)。