取消链接目录时会发生什么?

sto*_*ong 1 linux unlink rmdir

假设c.txt在目录中bunlink c.txt很简单,系统只是删除{XXX, c.txt}目录中的条目b。但是如果b是 的子目录a,并且我想取消链接会发生什么b,过程是相同的还是更复杂?

mvp*_*mvp 5

unlink(2)只能删除一个文件,而rmdir(2)只能删除空目录。

如果要递归删除目录,则必须智能地使用这两个系统调用。您可能会发现递归删除的许多不同实现,例如这个使用nftw,或者这个使用opendir/ readdir

  • @stonestrong 如果它是一个 /symbolic/ 链接,它将最终成为一个悬空引用,但是 /hardlink/ 将导致文件的使用计数仍然为 1,因此文件仍然存在。你可以自己试试: `mkdir -pa/b ; echo 你好,世界\!> a/b/c ; mkdir d ; ln -s ../a/b/cd/e ; ln a/b/cd/f ; rm -rf a ; 猫 d/e ; 猫 d/f` (3认同)