Почему функция realpath не работает в Cygwin? - PullRequest
0 голосов
/ 04 июля 2019
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, решено "" (пусто), почему?

1 Ответ

0 голосов
/ 04 июля 2019

Источник функции 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);
...