Изменить цель символической ссылки без удаления
Можно ли изменить содержимое символической ссылки, используя Qt
?
статический QFile::link
и нестатический оба возвращают false
если путь к файлу linkname уже существует.
Я просто хочу переназначить символическую ссылку. Аналог ln -sf
, но кроссплатформенный.
1 ответ
Краткий ответ: Нет.
Цитировать документы:
Эта функция не будет перезаписывать уже существующую сущность в файловой системе; в этом случае link() вернет false и установит error() для возврата RenameError.
Решение довольно простое: сначала удалите ссылку явно, например, используя QFile::remove()
по ссылке, затем используйте QFile::link()
для целевого файла (как вы уже сделали).
КСТАТИ, ln -f
с или без -s
не делает ничего, кроме звонка unlink()
, Это удобно видеть в источниках BusyBox (строка 128), в то время как в ядре GNU он немного более запутан.