Russian Qt Forum
Ноябрь 25, 2024, 20:45
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Как создать Hardlink?
Страниц:
1
[
2
]
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Как создать Hardlink? (Прочитано 20921 раз)
ритт
Гость
Re: Как создать Hardlink?
«
Ответ #15 :
Июль 20, 2009, 23:03 »
Цитата: Spectre от Июль 20, 2009, 21:17
Цитата: Константин от Июль 20, 2009, 21:04
в венде, начиная с висты, появилась нативная поддержка симлинков и хардлинков (к сожалению, под 2к придётся пользоваться костылями).
Не совсем понял причем здесь win 2k? Важен тип раздела NTFS.
тип раздела тоже важен, но нативная поддержка куда важнее.
Цитата: Spectre от Июль 20, 2009, 21:17
Я понял проблему с симлинками!
И вижу только 2 проблемы с хардлинками:
1) Создавать можно только в пределах раздела
2) Создавать можно только на разделах определенного типа
Ты это имеешь ввиду?
почти такие же ограничения и на симлинки. но это ограничения системы, а я говорил про проблемы реализации в Qt
lit-uriy, основной вопрос исчерпан в предыдущем посте. предлагаю оставить пока что как есть...
Записан
spectre71
Гость
Re: Как создать Hardlink?
«
Ответ #16 :
Июль 20, 2009, 23:35 »
Цитата: Константин от Июль 20, 2009, 23:03
тип раздела тоже важен, но нативная поддержка куда важнее.
Из MSDN
Цитировать
CreateHardLink
Requirements
Client Requires Windows Vista, Windows XP, or Windows 2000 Professional.
Server Requires Windows Server "Longhorn", Windows Server 2003, or Windows 2000 Server.
Header Declared in Winbase.h; include Windows.h.
Library Use Kernel32.lib.
DLL Requires Kernel32.dll.
Unicode Implemented as CreateHardLinkW (Unicode) and CreateHardLinkA (ANSI).
Записан
ритт
Гость
Re: Как создать Hardlink?
«
Ответ #17 :
Июль 21, 2009, 01:41 »
угу, для хардлинков (их указывал как "и" - получилось как будто и хардлинки только начиная с висты).
а отвечал на
Цитата: lit-uriy от Июль 20, 2009, 20:11
вот от символической ссылки на двухтоннике яб не отказался <snip>
Записан
ритт
Гость
Re: Как создать Hardlink?
«
Ответ #18 :
Июль 30, 2009, 15:56 »
вот и реализовал поддержку хардлинков, симлинков и алиасов (ну, почти реализовал)...
шурша манами, не встретил упоминаний того, можно ли из хардлинки (POSIX | NTFS) прочитать путь к источнику...как будто бы нет...
но решил обратиться к тем, кто знает наверняка, ибо закралось подозрение, что путь вытащить всё же можно (как минимум у junction'ов можно вытащить REPARSE_DATA и расковырять путь к источнику...)
«
Последнее редактирование: Июль 30, 2009, 16:01 от Константин
»
Записан
BRE
Гость
Re: Как создать Hardlink?
«
Ответ #19 :
Июль 30, 2009, 16:09 »
Цитата: Константин от Июль 30, 2009, 15:56
вот и реализовал поддержку хардлинков, симлинков и алиасов (ну, почти реализовал)...
шурша манами, не встретил упоминаний того, можно ли из хардлинки (POSIX | NTFS) прочитать путь к источнику...как будто бы нет...
но решил обратиться к тем, кто знает наверняка, ибо закралось подозрение, что путь вытащить всё же можно...
По моему, для ядра хардлинки на один и тот-же источник данных (inode) ничем не отличаются.
Записан
ритт
Гость
Re: Как создать Hardlink?
«
Ответ #20 :
Июль 30, 2009, 16:22 »
верно. но мне не для внутреннего поведения нужно, а юзверю показать что-то на QFileInfo::symLinkTarget()
Записан
BRE
Гость
Re: Как создать Hardlink?
«
Ответ #21 :
Июль 30, 2009, 16:30 »
Цитата: Константин от Июль 30, 2009, 16:22
верно. но мне не для внутреннего поведения нужно, а юзверю показать что-то на QFileInfo::symLinkTarget()
Пустую строку.
«
Последнее редактирование: Июль 30, 2009, 16:33 от BRE
»
Записан
ритт
Гость
Re: Как создать Hardlink?
«
Ответ #22 :
Июль 30, 2009, 16:38 »
пустая строка возвращается, если запись - не линк и иногда если таргет линка не существует.
вот я и думаю как мне рулить хардлинки - считать их вообще линками или пусть остаются обычными файлами?
Записан
BRE
Гость
Re: Как создать Hardlink?
«
Ответ #23 :
Июль 30, 2009, 16:42 »
Цитата: Константин от Июль 30, 2009, 16:38
пустая строка возвращается, если запись - не линк и иногда если таргет линка не существует.
вот я и думаю как мне рулить хардлинки - считать их вообще линками или пусть остаются обычными файлами?
После создания они и становятся обычными файлами, друг от друга ничем не отличающимися.
Поэтому, пустая строка, с точки зрения документации, будет в самый раз.
IMHO.
Записан
BRE
Гость
Re: Как создать Hardlink?
«
Ответ #24 :
Июль 30, 2009, 18:03 »
Еще мысли вслух.
Можно проверять количество линков и если их больше 1, считать файл hardlink'ом и выводить в QFileInfo::symLinkTarget() абсолютный путь к файлу.
Записан
spectre71
Гость
Re: Как создать Hardlink?
«
Ответ #25 :
Июль 30, 2009, 18:35 »
Цитата: BRE от Июль 30, 2009, 18:03
Еще мысли вслух.
Можно проверять количество линков и если их больше 1, считать файл hardlink'ом и выводить в QFileInfo::symLinkTarget() абсолютный путь к файлу.
Лучше не надо! Поскольку никакого отношения к symLink не имеет.
Однозначно, всегда выводить пустую строку.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Как создать Hardlink?
«
Ответ #26 :
Июль 30, 2009, 19:07 »
а по мне дак "или пусть остаются обычными файлами?"
Записан
Юра.
spectre71
Гость
Re: Как создать Hardlink?
«
Ответ #27 :
Июль 30, 2009, 19:26 »
Цитата: lit-uriy от Июль 30, 2009, 19:07
а по мне дак "или пусть остаются обычными файлами?"
Так они и есть обычные файлы, вернее один файл!
Можно сказать так: Имя файла это Hard Link на "физический источник" inode
"Физический файл" просто может иметь несколько имен, т.е хардлинков и они все равнозначны!
Записан
ритт
Гость
Re: Как создать Hardlink?
«
Ответ #28 :
Июль 30, 2009, 19:55 »
нет, сорц не может быть таргетом.
> thiago: a hardlink has no target
значит, остаются симлинки и алиасы. есть ещё junction'ы, но пока не знаю куда их присобачить. возможно, для < висты будут играть роль кастрированных симлинков (только папки на папки, если правильно помню)...
Записан
ритт
Гость
Re: Как создать Hardlink?
«
Ответ #29 :
Июль 30, 2009, 20:03 »
Цитата: Spectre от Июль 30, 2009, 19:26
Можно сказать так: Имя файла это Hard Link на "физический источник" inode
"Физический файл" просто может иметь несколько имен, т.е хардлинков и они все равнозначны!
поправка - они неравнозначны. мелкомягкие, как всегда, вые?нулись/сэкономили - в итоге инфа для хардлинков обновляется только при открытии и на получение инфы по хэндлу (ctrl+r в тотале наглядно показывает как работает это убожество).
даже захотелось поставить свисту - чтобы иметь нормальные симлинки...но я знаю, что мне всё-равно будет лень переустанавливать систему
лучше я чуть позже попрошу кого-нибудь из счастливых обладателей потестить изменения...
Записан
Страниц:
1
[
2
]
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...