首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相对路径的扫描处理

相对路径的扫描处理
EN

Stack Overflow用户
提问于 2020-09-09 20:23:54
回答 1查看 161关注 0票数 0

函数是否处理相对路径?

换句话说,以下两段代码是否等效?

代码语言:javascript
复制
int NUM = scandir("/home/hello/wait/../pqr/../../hello", &LIST, 0, alphasort);
代码语言:javascript
复制
int NUM = scandir("/home/hello", &LIST, 0, alphasort);

如果没有,是否有一些简单的buit-in函数将/home/hello/wait/../pqr/../../hello转换为/home/hello

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-09 20:54:22

函数是否处理相对路径?

我相信答案是肯定的。从posix scandir我们只知道:

函数将扫描目录dir,.

来自posix定义:

3.129目录 包含目录条目的文件。同一目录中没有两个目录条目具有相同的名称。

scandir的参数是char *,所以它是一个字符串。从posix的定义中我们知道:

3.271路径名 用于标识文件的字符串。..。

另一个名为4.13 Pathname Resolution的部分深入研究了如何解析路径名,并告诉我们:

如果路径名没有以a开头,路径名的第一个文件名的前身将被视为进程相对路径名的当前工作目录。

因此,因为scandir将路径名取到目录中,并且由于路径名是如何解析的,所以您可以给出相对路径。

换句话说

这不是“另一个词”-你展示的两个路径名都是绝对的,而不是相对的。在路径名中使用点点不会使路径名相对。

以下两段代码是否等效?

是。

是否有一些简单的buit-in函数来将/home/hello/wait/./pqr/././hello转换为/home/hello?

在我所知道的任何编译器中,都没有“内置函数”来规范化路径名。为此,POSIX提供了一个完全正常的函数,称为realpath()。GNU库可以动态地分配返回的字符串,并且它还有名字

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63819060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档