copyfile function on Mac OS X

copyfile function on Mac OS X

本文关键字:OS Mac on function copyfile      更新时间:2023-10-16

我正在编写一个程序,可以将文件和文件夹从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只是不做某些事情?是否有比copyfile更好的方法来复制文件及其所有属性/元数据?

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

你必须自己深入挖掘才能找到你的问题,幸运的是你可以在 copyfile()本身中挖掘。苹果公司提供了完整的源代码,你可以将其链接到你的代码中,然后通过它来查找问题。

注意:您可能需要稍微调整源代码以使其能够编译,但这足够简单。但是,如果你试着卡住了,问另一个问题,详细说明你做了什么,哪里出了问题,有人可能会帮助你。

HTH