Spec-Zone.ru › C++

std::filesystem::hard_link_count

Определён в заголовочном файле <filesystem>
std::uintmax_t hard_link_count( const std::filesystem::path& p );
(1) (начиная с C++17)
std::uintmax_t hard_link_count( const std::filesystem::path& p,
                                std::error_code& ec ) noexcept;
(2) (начиная с C++17)

Возвращает количество жёстких ссылок на объект файловой системы, указанный путём p.

Перегрузка, не выбрасывающая исключения, при ошибках возвращает static_cast<uintmax_t>(-1).

Параметры

p - путь для проверки
ec - выходной параметр для сообщения об ошибках в перегрузке, не выбрасывающей исключения

Возвращаемое значение

Количество жёстких ссылок на p.

Исключения

Любая перегрузка, не помеченная как noexcept, может выбросить std::bad_alloc, если не удастся выделить память.

1) При ошибках нижележащего API операционной системы выбрасывает std::filesystem::filesystem_error, в конструктор которого передаётся p в качестве первого аргумента-пути, а код ошибки операционной системы — в качестве аргумента кода ошибки.
2) Если вызов API операционной системы завершается ошибкой, устанавливает для параметра std::error_code& код ошибки API операционной системы; если ошибок нет, выполняет ec.clear().

Пример

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;

int main()
{
    // On a POSIX-style filesystem, each directory has at least 2 hard links:
    // itself and the special member pathname "."
    fs::path p = fs::current_path();
    std::cout << "Number of hard links for current path is "
              << fs::hard_link_count(p) << '\n';

    // Each ".." is a hard link to the parent directory, so the total number
    // of hard links for any directory is 2 plus number of direct subdirectories
    p = fs::current_path() / ".."; // Each dot-dot is a hard link to parent
    std::cout << "Number of hard links for .. is "
              << fs::hard_link_count(p) << '\n';
}

Возможный вывод:

Number of hard links for current path is 2
Number of hard links for .. is 3

См. также

create_hard_link
(C++17)
создаёт жёсткую ссылку
(функция)
hard_link_count
возвращает количество жёстких ссылок на файл, на который ссылается элемент каталога
(открытая функция-член std::filesystem::directory_entry)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/filesystem/hard_link_count

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API