0
char *path = "somefile.txt";
char resolved[PATH_MAX] = {0};
realpath(path, resolved);

printf("path is %s, resolved path is %s", path, resolved);

在linux env中,一切正常,但是如果是在cygwin env中构建的,resolved是“”(空),为什么?

4

1 回答 1

0

realpath函数的来源在文件中canonicalize.c。有这样的代码:

if (resolved == NULL)
{
    rpath = malloc (path_max);
    if (rpath == NULL)
    return NULL;
}
else
    rpath = resolved;

我认为您用于数组resolved库函数的初始化被认为是NULL并且没有保存到其中。尝试初始化

char *resolved;
resolved=malloc(PATH_MAX);

 /* SOME CODE  */

free(resolved);
于 2019-07-04T15:25:36.013 回答