首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Realpath要求文件存在

Realpath要求文件存在
EN

Stack Overflow用户
提问于 2015-03-29 15:37:27
回答 1查看 3.9K关注 0票数 2

我希望检查一个路径是否是另一个路径的子路径,所以我调用realpath(file_path, NULL)并将结果与strncmp进行比较。

我写这个主题的原因是:realpatherrno设置为拒绝访问。如果这个路径的一部分是某个目录的子路径,那么在调用realpath之前文件就不存在了,我想创建一个文件。

在Linux/Unix/C中是否存在一个不检查文件是否存在的realpath?它也不能跟随符号链接。

评论材料

假设我有"/tmp/tao-client-aaaaaa/classes/“目录,我只想创建(一个文件) "/tmp/tao-client-aaaaaa/classes/parent/parent generating test",因为应用程序(服务器)要求创建"/parent/parent generating test”。问题是我无法创建名为"parent“的目录,因为它可能是"..”,而realpath将返回错误,而测试文件将在不存在的目录中创建。

我想,我可以自己实现realpath,但我听说Unicode有很多字符或字符连接,意思是父目录。

“答案”中的材料

我有个主意。我可以创建添加到path下一个目录的函数,使用realpathrealpath的测试结果是参数的子目录(称为路径)。接下来,如果条件不传递,则返回null,如果条件传递,则返回realpath结果。包装器将创建该目录,并从path获取下一个目录,以保存文件,并以这种方式将其传递给result_path = test_real_path(result_path, next_directory)函数。

但这不是很好的解决方案,因为我创建目录,我不知道如果结果不会是路径的子级怎么办。只需删除所有创建的目录?

EN

回答 1

Stack Overflow用户

发布于 2015-03-29 15:50:38

我认为“拒绝访问”(EACCES)并不表示缺少文件(ENOENT),但对路径或其部分的访问权限不足。

来自人的真实路径

误差 拒绝对路径前缀的组件进行EACCES读取或搜索权限。 ..。 ENOENT命名文件不存在。

回答你的问题:

Linux/Unix/C中是否存在等效的realpath,它不检查文件是否存在?

不是的。

但这对于用例来说并不是必要的。只需使用.,而不是要创建的文件名。

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

https://stackoverflow.com/questions/29331103

复制
相关文章

相似问题

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