我有一个使用 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/