为什么 rmdir (系统调用)只适用于空目录?

为什么 rmdir (系统调用)只适用于空目录?

是否无法自动取消目录与其父级索引节点的链接?这背后有什么历史原因吗?

答案1

int rmdir(const char *pathname);

是一个系统调用,符合 POSIX.1-2001。现在想象一下这样一种情况,您希望此系统调用不只删除单个目录,而是删除其中的所有子目录和文件。

  1. 您必须将此逻辑添加到内核中,这不是一件容易的事,这样做会使内核膨胀
  2. 该操作在执行时间方面变得不确定
  3. 有很多种方法可能会导致处理失败,而这些方法在内核中没有多大意义。

答案2

这是一个功能,不是一个缺陷!

人们可以使用 轻松删除空目录rmdir *,同时保留非空目录。这是我经常使用的系统管理实践。

rm -rf删除整个目录树(所有文件和子目录)。

相关内容