2017-12-18 21 views
0

Qt을 사용하여 symlink의 내용을 변경할 수 있습니까?심볼릭 링크의 대상을 삭제하지 않고 변경

정적 QFile::link 및 non-static one은 linkname filepath가 이미 존재하는 경우 모두 false을 반환합니다.

그냥 심볼릭 링크 대상을 다시 지정하고 싶습니다. ln -sf의 아날로그이지만 교차 플랫폼입니다.

답변

1

짧은 답변 : 제

인용하는 docs :이 기능은 파일 시스템에 이미 존재하는 개체를 덮어 쓰지 않습니다

; 이 경우 link()는 false를 반환하고 error()를 설정하여 RenameError를 반환합니다.

해결 방법은 간단합니다. 먼저 링크를 명시 적으로 제거하십시오. 지. QFile::remove()을 사용하고을 입력 한 다음 대상 파일에 QFile::link()을 사용합니다 (이미 수행 한 것처럼).

BTW, ln -f-s의 유무에 관계없이 unlink()을 호출하는 중 아무것도 수행하지 않습니다. 이것은 BusyBox sources (line 128)에서 편리하게 볼 수 있으며, GNU coreutils에서는 약간 더 혼란 스럽습니다.

+0

이게 뭐야, 트릭 질문을 인식 할 수 있는지 여부를 테스트하는거야? 이미 답을 알고 있고 후속 독자가 알아야하는 것이 중요하다고 생각한다면 보완적인 답을 쓰지 않는 이유는 무엇입니까? 다른 사람이 대답하기를 원한다면 질문에 해당 지점을 추가하거나 새로운 질문을 작성하는 것이 좋습니다. – Murphy