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 действительно так же, как /, Я знаю, что это безумие, но это единственное, что я могу придумать.

Другие вопросы по тегам