Too many levels of symbolic links到底是什么原因?
当link操作的源文件和目标文件不在同一目录路径下时,有时会出现这个问题。
网上说的无非是使用绝对路径而不是相对路径就好了。
我想问的是,产生这个错误的原因是什么?
在研究fstest测试代码的过程中有这样一段代码:
expect 0 symlink ${n0} ${n1}
expect 0 symlink ${n1} ${n0}
expect ELOOP unlink ${n0}/test
expect ELOOP unlink ${n1}/test
expect 0 unlink ${n0}
expect 0 unlink ${n1}
n0和n1互相链接的时候没有ELOOP错误,但是在其中之一目录下操作时就有了ELOOP错误,在linux下操作这个例子时:
ln -s n0 n1
ln -s n1 n0
unlink n0/test
就会出现:符号连接的层数过多(Too many levels of symbolic links)的错误
posix里面是这样形容ELOOP错误的:
[ELOOP] (为什么n0和n1互相链接不会报loop的错误?)
A loop exists in symbolic links encountered during resolution of the path argument.
[ELOOP] (这应该就是链接层数过多的错误情况)
More than {SYMLOOP_MAX} symbolic links were encountered during resolution of the path argument.