Strace сообщает неверный относительный путь?
Я использую strace сообщить open а также chdir Системные вызовы, а фрагмент его вывода:
6791 chdir("//etc") = 0
6791 open("etc/fstab", O_RDONLY) = 3
Это не имеет смысла. Сначала мы спускаемся в /etc каталог, затем тот же процесс пытается открыть относительный файл etc/fstab оттуда. Вызов завершается успешно, но такого файла нет /etc/etc/fstab, Есть только файл /etc/fstab,
Почему страйс сообщает etc/fstab и не /etc/fstab как это должно?
1 ответ
Ну... очевидно POSIX допускает такую вещь, как ведущий двойной слеш в именах путей. Это означает, что не корневой каталог, как можно было бы подумать, но он зависит от реализации. Я думаю, в этом случае //etc действительно так же, как /, Я знаю, что это безумие, но это единственное, что я могу придумать.