如何将目录从一个路径复制到另一个路径?

时间:2021-01-27 05:12:20

标签: c

我有一个简单的问题。如何将 directory 从一个位置复制到 C 中的另一个位置?我在网上搜索,但我发现的结果是关于复制文件。这不是关于复制目录吗?除了使用 system() 命令,我不知道该怎么做。我不想使用 system() 命令执行此操作。有没有其他原创方式?

1 个答案:

答案 0 :(得分:1)

阅读Modern C。 C 标准不知道目录,请通过阅读 n1570 或一些更新的草案来检查。

一些开源库,特别是 Glib,可能会有用。

你可以使用它们,或者至少研究它们的源代码以获得灵感。

在 Linux 上,stat(2)opendir(3)readdir(3)closedir(3) nftw(3) 可能很有用。

当然,对于 Linux,您需要阅读 Advanced Linux Programmingsyscalls(2)errno(3) 和相关文档。

在 Linux 上,GNU coreutilsGNU findutilsfree software您可以下载源代码,研究并改进它。

sash shell 也包含有趣的代码。下载源代码然后研究它。 它是open source,因此您可以研究它并从中汲取灵感

您还可以在递归 strace(1) 命令上使用 cp(1) 来了解发生了什么。

另请阅读 inode(7)credentials(7)path_resolution(7) 以了解一个文件可能有多个文件路径(或者甚至没有,如果另一个 process 执行了 {{ 3}};另见 unlink(2))。