我应该从Boost::filesystem::copy中看到哪些错误代码?



我正在尝试使用system::error_code参数boost::filesystem::copy_file将文件复制到目的地,因为我不希望抛出异常。

该函数接受一个参数,如果同名文件已经存在,它是否会失败,这是我想要的行为。从http://www.boost.org/doc/libs/1_46_1/libs/filesystem/v3/doc/reference.html copy_file:

效果:If option == copy_option::fail_if_exists &&Exists (to),报错

然而,我找不到我应该期待的错误代码。这取决于底层操作系统吗?

是的,它依赖于底层操作系统。源代码显示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()指定来自操作系统的错误,Posix系统上的BOOST_ERRNOerrno

在Posix上,O_CREATO_EXCLopen()的底层调用将失败,并且当文件已经存在时将errno设置为EEXIST

最新更新