我有一个简单的问题。如何将 directory
从一个位置复制到 C
中的另一个位置?我在网上搜索,但我发现的结果是关于复制文件。这不是关于复制目录吗?除了使用 system()
命令,我不知道该怎么做。我不想使用 system()
命令执行此操作。有没有其他原创方式?
答案 0 :(得分:1)
阅读Modern C。 C 标准不知道目录,请通过阅读 n1570 或一些更新的草案来检查。
一些开源库,特别是 Glib,可能会有用。
你可以使用它们,或者至少研究它们的源代码以获得灵感。
在 Linux 上,stat(2)、opendir(3)、readdir(3)、closedir(3) nftw(3) 可能很有用。
当然,对于 Linux,您需要阅读 Advanced Linux Programming、syscalls(2)、errno(3) 和相关文档。
在 Linux 上,GNU coreutils 和 GNU findutils 是 free software。 您可以下载源代码,研究并改进它。
sash
shell 也包含有趣的代码。下载源代码然后研究它。 它是open source,因此您可以研究它并从中汲取灵感。
您还可以在递归 strace(1) 命令上使用 cp(1) 来了解发生了什么。
另请阅读 inode(7)、credentials(7) 和 path_resolution(7) 以了解一个文件可能有多个文件路径(或者甚至没有,如果另一个 process 执行了 {{ 3}};另见 unlink(2))。