Изменить цель символической ссылки без удаления

Можно ли изменить содержимое символической ссылки, используя Qt?

статический QFile::link и нестатический оба возвращают false если путь к файлу linkname уже существует.

Я просто хочу переназначить символическую ссылку. Аналог ln -sf, но кроссплатформенный.

1 ответ

Решение

Краткий ответ: Нет.

Цитировать документы:

Эта функция не будет перезаписывать уже существующую сущность в файловой системе; в этом случае link() вернет false и установит error() для возврата RenameError.

Решение довольно простое: сначала удалите ссылку явно, например, используя QFile::remove() по ссылке, затем используйте QFile::link() для целевого файла (как вы уже сделали).

КСТАТИ, ln -f с или без -s не делает ничего, кроме звонка unlink(), Это удобно видеть в источниках BusyBox (строка 128), в то время как в ядре GNU он немного более запутан.

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