Mac OS X上的copyfile函数

时间:2015-05-15 01:20:53

标签: c++ macos data-transfer file-copying

我正在开发一个程序,可以将文件和文件夹从a点复制到b点,大部分都非常简单。我决定使用copyfile函数进行实际复制,因为它处理所有元数据。无论出于何种原因,即使我以root身份运行它,也有许多文件无法复制。无法复制的示例文件是/usr/share/emacs/22.1/etc/BABYL

我不知道为什么会这样做。文件本身很好,我可以在Finder中找到它并复制并粘贴它就像任何其他普通文件一样。是否有一些我遗失的许可问题?它似乎只对系统文件执行此操作,但不是全部。它的内容是一致的,也不会复制。

实际的函数调用如下所示 copyfile(filePath, destPath, gState, COPYFILE_DATA | COPYFILE_ACL | COPYFILE_STAT | COPYFILE_XATTR); 我得到的错误不是很有用,只是IO错误5。

是否有我遗漏的东西会导致它无法用于某些文件?或者copyfile只是不做certian事情?有没有比copyfile更好的方法来复制文件及其所有属性/元数据?

请不要建议其他复制文件的程序,这不是我在这里的目的。 谢谢!

1 个答案:

答案 0 :(得分:1)

你将不得不深入挖掘自己找到问题,幸运的是你可以在 copyfile()内挖掘。 Apple提供了full source,您可以将其链接到您的代码中,然后跟踪它以查找问题。

注意:您可能需要稍微调整源代码才能进行编译,但这样做很简单。但是,如果你试图陷入困境,请提出另一个问题,详细说明你曾尝试过什么以及出了什么问题,有人可能会帮助你。

HTH