我有一个使用 getcwd() 获取当前工作目录的构建系统工具。这很好,除了有时人们在他们的路径中有空格,这是构建系统不支持的。你会认为你可以做一个符号链接(symbolic link):

ln -s "Directory With Spaces" DirectoryWithoutSpaces

然后开心就好。但对我来说不幸的是,getcwd() 解析了所有的符号链接(symbolic link)。我尝试使用 getenv("PWD") ,但它指向的路径与我从 getcwd() 返回的路径不同。我认为我责怪 make -C 没有更新环境变量。现在,getcwd() 给了我一个这样的路径:
/Users/carl/Directory With Spaces/Some/Other/Directories
getenv("PWD") 给了我:
/Users/carl/DirectoryWithoutSpaces

那么 - 有没有像 getcwd() 这样的函数不能解析符号链接(symbolic link)?

编辑:

我变了
make -C Some/Other/Directories


cd Some/Other/Directories ; make

然后 getenv("PWD") 工作.. 如果没有其他解决方案,我可以使用它。

最佳答案

根据 Stevens 的《UNIX 环境圣经中的高级编程》,第 112 页:



抱歉,看来您确实需要以其他方式解决此问题。

关于c - 如果 getcwd() 和 getenv ("PWD") 不匹配,我该怎么办?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3269725/

10-12 23:34