Какие коды ошибок мне следует ожидать от Boost::filesystem::copy

Я пытаюсь скопировать файл в место назначения, используя boost:: filesystem:: copy_file с параметром system:: error_code, так как я не хочу генерировать исключения.

Эта функция принимает параметр, должен ли он произойти сбой, если файл с таким именем уже существует, и это именно то поведение, которое мне нужно. С http://www.boost.org/doc/libs/1_46_1/libs/filesystem/v3/doc/reference.html:

Эффекты: если опция == copy_option::fail_if_exists && существует (to), сообщается об ошибке.

Однако я не могу найти, какие коды ошибок мне следует ожидать. Это зависит от базовой ОС?

1 ответ

Решение

Да, это зависит от базовой ОС. Исходный код показывает, что copy_file() (и другие операции) генерирует такие ошибки:

  if (ec == 0)
    BOOST_FILESYSTEM_THROW(filesystem_error(message,
      p, error_code(BOOST_ERRNO, system_category())));
  else
    ec->assign(BOOST_ERRNO, system_category());

system_category() указывает ошибки, возникающие из операционной системы и BOOST_ERRNO в системах Posix есть errno,

На Posix основной вызов open() с O_CREAT а также O_EXCL потерпит неудачу и установит errno в EEXIST когда файл уже существует.

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