Linux中文件名解析处理源码分析(2)

.if (err) {
err = nested_symlink(&next, nd);
if (err)
return err;
}
if (can_lookup(nd->inode))
continue;
/* 字符串还没有解析完毕,但是当前的inode已经继续不允许解析处理了,所以,返回错误码 */
err = -ENOTDIR;
break;
/* here ends the main loop */

.last_component:
/* 最后一个字符串不需要解析处理,需要由do_last函数来处理,此处结束解析,正确返回 */
nd->last = this;
nd->last_type = type;
return 0;
}
terminate_walk(nd);
return err;
}

小结

文件名解析处理是文件系统的必备功能,通过文件名的解析索引到表示文件的inode内存对象,并且创建文件对象file。在文件名解析的过程中,首先需要确定的是检索起始点,然后通过hash table查找目录项以及检索文件。在查找的过程中,需要考虑文件访问的权限以及符号连接等问题。总体来说这些代码难度不是很大,但是需要有一个整体的思路,就可以更好的理解分析代码了,这里只是对名字解析过程中的几个关键函数进行抛砖引玉式的分析。不正之处,敬请指出。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/a9f2e004ef47e3326cdb19d0bbc2c7cd.html