gpt4 book ai didi

c - 如何在 Linux "even if the filepath is not existing on the file system"上获取规范化(规范化)文件路径? (在 C 程序中))

转载 作者:IT王子 更新时间:2023-10-29 00:57:38 25 4
gpt4 key购买 nike

我对这个主题进行了很多研究,但没有得到任何实质性的东西。通过标准化/规范化,我的意思是从文件路径中删除所有“..”、“.”、多个斜杠等,并获得一个简单的绝对路径。例如

"/rootdir/dir1/dir2/dir3/../././././dir4//////////" to "/rootdir/dir1/dir2/dir4"

在 Windows 上我有 GetFullPathName() 并且我可以获得规范的文件路径名称,但是对于 Linux 我找不到任何可以为我做同样工作的 API,realpath() 在那里,但即使是 realpath() 也需要文件路径存在于文件系统上才能输出规范化路径,例如如果路径/rootdir/dir1/dir2/dir4 不在文件系统上 - realpath() 将在上面指定的复杂文件路径输入上抛出错误。有什么方法可以获取规范化的文件路径即使它不存在于文件系统中

最佳答案

realpath(3) 不解析丢失的文件名。
但是 GNU 核心实用程序 ( https://www.gnu.org/software/coreutils/ ) 有一个程序 realpath(1) 类似于 realpath(3) 功能,但有选项:
-m, --canonicalize-missing 路径的任何组成部分都不需要存在
您的任务可以通过 coreutils 源文件 lib/canonicalize.c 中的 canonicalize_filename_mode() 函数来完成。

关于c - 如何在 Linux "even if the filepath is not existing on the file system"上获取规范化(规范化)文件路径? (在 C 程序中)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33078920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com