我想要一个将相对路径转换为绝对路径的标准函数,如果可能的话,我想尽可能使它成为跨平台(所以我想避免调用外部库函数)。 这样做是为了防止路径攻击。
我知道这样的函数不能检测符号链接,但我对我的应用程序没问题。
我可以推出自己的代码,但可能存在一些问题,例如平台如何处理“../”模式的编码或变体。
有没有已经实现的东西?
您可以调用没有单一的通用函数,因为C或C ++标准库中没有这样的函数。 在Windows上,您可以使用GetFullPathName
。 在Linux,Mac OS X和其他基于Unix的系统上,您可以使用realpath(3)
函数,作为奖励还可以解决沿途的符号链接。
注意:任何解决方案都只能在单线程程序中可靠。 如果您正在使用多个线程,则另一个线程可以出去并意外地从您下方更改工作目录,从而更改路径名称解析。
我认为最接近平台独立性的是POSIX库 。 特别是你想看看unistd.h ,遗憾的是我不相信它有一个“规范化”的路径概念。 如果我没记错的话,标准本身甚至不太了解目录而不是相对的目录。
为了变得更好,我认为你需要推出自己的道路好东西。
以上就是c/c++开发分享安全的跨平台function,以获得规范化的路径相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/545645.html