LINUX.ORG.RU

Получение пути к файлу


0

0

Интересный случай. Системные вызовы вроде open(), execve() и прочие в качестве имени файла могут получать что-то вроде "./file", "./foo/../bar/file" и т.д. Чтобы преобразовать это к нормальному виду, использую функцию path_lookup: void print_real_filename(const char* filename) { struct nameidata nd; path_lookup(file, LOOKUP_FOLLOW, &nd); // далее, используя nd->dentry->d_iname и перемещаясь назад по // dentry->d_parent, вывожу полный путь. } Далее. Вызываю эту функцию из перехваченного open(). Все нормально работает. Меняю тип возврата функции на char*, и не вывожу, а копирую путь в память, далее возвращаю его. Вызываю из перехваченного open() - вылазит упс. Убираю копирование в память, оставляю только path_lookup(file, LOOKUP_FOLLOW, &nd); вылазит Oops. В чем дело? Может, у кого есть самодельный алгоритм преобразования подобного трэша в нормальное имя файла?


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.