是否有POSIX系统调用来解析文件系统路径?我有一个路径的CWD,以及该CWD文件的路径。我无法使用chdir
切换到目录,因为我需要同时解析来自多个线程的路径。我考虑在CWD和路径之间添加一个/
,但出于某种原因,感觉就像是hacky。这是解决相对路径的正确方法吗?
答案 0 :(得分:3)
我认为在几乎所有情况下添加/
都应该足够了 - 即使使用.
,..
,额外/
s或符号链接,它应该只是正确的事。如果您真的想使用标准库执行此操作,可以使用realpath(3)
进行路径规范化,但我不知道如何按照您的需要进行操作。
答案 1 :(得分:1)
根据您对文件的处理方式,以及POSIX.1-2008中相对较新的添加内容是否可以接受,openat
和朋友可能会感兴趣:
int dirfd = open(desired_cwd_path, O_RDONLY);
int fd = openat(dirfd, file_relpath, O_RDONLY);
close(dirfd);
// ...use fd
(这些系统调用已存在于例如Solaris和Linux上很长一段时间了。)