Mic*_*cer 5 c linux posix cifs path
给定一个/network/cifs
不区分大小写的已安装的cifs文件系统,如何使用C获取区分大小写的路径?
例如,fs有一个文件/network/cfis/Adena/t.txt
.鉴于/network/cfis/AdEnA/T.txt
(正确解决),我想要/network/cfis/Adena/t.txt
.
我知道一种方法是在路径上递归迭代,在所有小写中匹配它们,并获得目录迭代返回的实际情况.但是,这涉及很多我不愿意做的系统调用.
更改安装选项不是解决方案.
如果这不可能,是否可以确定路径是否在不区分大小写的文件系统上?这样我就可以避免执行递归目录迭代,除非需要.
这个问题昨晚刚刚在 IRC 中出现;我的答案是你必须迭代,原因是getcwd
(这可以通过仅查看/proc/N/
Linux 中的文件来实现)无法可靠地确定规范名称。Linux CIFS 内核模块将使用您要求的大小写来动态伪造 inode:
ls -dli /mnt/foo /mnt/foO /mnt/fOo /mnt/FOo /mnt/FOO
Run Code Online (Sandbox Code Playgroud)
可以显示非常不同的值,因此,/proc/self/cwd
将反映这些索引节点之一,不一定是具有规范命名的索引节点。
归档时间: |
|
查看次数: |
1035 次 |
最近记录: |