std::filesystem::create_hard_link

target을 가리키는 하드 링크 link를 만드는 함수예요. C++17부터 있어요.

출처: cppreference

본문

<filesystem> 헤더에 정의돼 있어요.

void create_hard_link( const std::filesystem::path& target,
                       const std::filesystem::path& link );          // (1) C++17
void create_hard_link( const std::filesystem::path& target,
                       const std::filesystem::path& link,
                       std::error_code& ec ) noexcept;               // (2) C++17

POSIX link()처럼 target을 목표로 하는 하드 링크 link를 만들어요. 경로 이름 target은 존재해야 해요. 일단 만들어지면 linktarget은 같은 파일을 가리키는 두 개의 논리적 이름이 돼요(동등해요). 원래 이름 target이 삭제되어도 파일은 계속 존재하며 link로 접근할 수 있어요.

매개변수

  • target — 링크할 파일·디렉터리의 경로
  • link — 새 하드 링크의 경로
  • ec — 예외 없는 버전에서 오류 보고용 출력 매개변수

반환값

(없음)

예외

noexcept로 표시되지 않은 오버로드는 메모리 할당이 실패하면 std::bad_alloc을 던질 수 있어요.

    1. OS API 오류가 있으면 target을 첫 경로 인자, link를 두 번째 경로 인자, OS 오류 코드를 오류 코드 인자로 삼아 std::filesystem::filesystem_error를 던져요.
    1. OS API 호출이 실패하면 ec에 OS 오류 코드를 설정하고, 오류가 없다면 ec.clear()를 실행해요.

참고

일부 운영체제는 하드 링크를 전혀 지원하지 않거나 일반 파일에 대해서만 지원해요. 일부 파일시스템은 운영체제와 무관하게 하드 링크를 지원하지 않아요. 메모리 카드와 플래시 드라이브에 쓰이는 FAT 파일시스템이 그 예예요.

더 알아보기 (Learn more)

cppreference