Какие коды ошибок мне следует ожидать от 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_file:

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

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

4

Решение

Да, это зависит от базовой ОС. Исходный код показывает, что 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 когда файл уже существует.

2

Другие решения


По вопросам рекламы [email protected]