std::filesystem:: equivalent
|
헤더 파일에 정의됨
<filesystem>
|
||
|
bool
equivalent
(
const
std::
filesystem
::
path
&
p1,
const std:: filesystem :: path & p2 ) ; |
(1) | (C++17 이후) |
|
bool
equivalent
(
const
std::
filesystem
::
path
&
p1,
const
std::
filesystem
::
path
&
p2,
|
(2) | (C++17 이후) |
경로 p1 과 p2 가 동일한 파일 시스템 엔터티로 확인되는지 검사합니다.
만약 p1 또는 p2 중 하나가 존재하지 않으면 오류가 보고됩니다.
비예외 오버로드는 오류 발생 시 false 를 반환합니다.
목차 |
매개변수
| p1, p2 | - | 동등성을 확인할 경로 |
| ec | - | non-throwing 오버로드에서 오류 보고를 위한 출력 매개변수 |
반환값
true 만약 p1 과 p2 가 동일한 파일이나 디렉토리를 참조하고 파일 상태가 동일한 경우. false 그렇지 않은 경우.
예외
noexcept
로 표시되지 않은 모든 오버로드는 메모리 할당이 실패할 경우
std::bad_alloc
을(를) throw할 수 있습니다.
참고 사항
두 경로가 동일한 파일 시스템 엔티티로 확인되려면, 경로들이 확인되는 두 후보 엔티티가 동일한 장치의 동일한 위치에 있어야 합니다. POSIX의 경우, 이는 POSIX
stat
구조체
의
st_dev
와
st_ino
멤버가 POSIX
stat()
을 통해 얻은 것처럼 동일함을 의미합니다.
특히, 동일한 파일 또는 디렉터리에 대한 모든 하드 링크는 동등하며, 동일한 파일 시스템 상의 심볼릭 링크와 그 대상은 동등합니다.
예제
#include <cstdint> #include <filesystem> #include <iostream> namespace fs = std::filesystem; int main() { // 하드 링크 동등성 fs::path p1 = "."; fs::path p2 = fs::current_path(); if (fs::equivalent(p1, p2)) std::cout << p1 << " is equivalent to " << p2 << '\n'; // 심볼릭 링크 동등성 for (const fs::path lib : {"/lib/libc.so.6", "/lib/x86_64-linux-gnu/libc.so.6"}) { try { p2 = lib.parent_path() / fs::read_symlink(lib); } catch (std::filesystem::filesystem_error const& ex) { std::cout << ex.what() << '\n'; continue; } if (fs::equivalent(lib, p2)) std::cout << lib << " is equivalent to " << p2 << '\n'; } }
가능한 출력:
"." is equivalent to "/var/tmp/test" filesystem error: read_symlink: No such file or directory [/lib/libc.so.6] "/lib/x86_64-linux-gnu/libc.so.6" is equivalent to "/lib/x86_64-linux-gnu/libc-2.23.so"
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 2937 | C++17 | 오류 조건이 잘못 지정됨 | 수정됨 |
참고 항목
|
두 경로의 어휘 표현을 사전식으로 비교합니다
(
std::filesystem::path
의 public member function)
|
|
|
(C++17)
(C++17)
(until C++20)
(C++17)
(until C++20)
(C++17)
(until C++20)
(C++17)
(until C++20)
(C++17)
(until C++20)
(C++20)
|
두 경로를 사전식으로 비교합니다
(function) |
|
(C++17)
(C++17)
|
파일 속성을 결정합니다
심링크 대상을 확인하여 파일 속성을 결정합니다 (function) |