Какие коды ошибок мне следует ожидать от 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
когда файл уже существует.