【发布时间】:2015-11-05 17:15:08
【问题描述】:
我从 C 开始,我需要使用函数 realpath,但我没有找到很多示例。我帮了自己:link。 我目前的问题是我的函数适用于文件夹,但当它是文件时,realpath 返回 null。
while ((dir = readdir(rep)) != NULL)
{
if ( !strcmp(dir->d_name, ".") || !strcmp(dir->d_name, "..") )
{
// do nothing (straight logic)
} else {
char buf[_POSIX_PATH_MAX];
char *path;
path = realpath(dir->d_name, buf);
if (!path)
{
perror("realpath");
exit(EXIT_FAILURE);
}
}
编辑:我的功能的目的是为文件夹目录中的文件和文件夹提供任何绝对真实路径
【问题讨论】:
-
您需要在调用
realpath后检查errno以获取EACCES, EINVAL, EIO, ELOOP, ENAMETOOLONG, ENOENT或ENOTDIR以找出原因。我怀疑你会发现它是ENOTDIR。 -
当我这样做时:
printf("ERROR: %s\n", strerror(errno));我有:No such file or directory。我确定该文件存在。 -
你的工作目录是什么?
dir->d_name只是基本名称 - 在最后一个“/”之后的文件名。 -
不,文件名是 dir->d_name。我的工作目录是 rep 或 dir after。