在 Linux/UNIX 上用纯 C 递归复制目录

标签 c linux unix copy

有人可以指导我找到可能的解决方案吗?我不想使用 /bin/cp 或任何其他外国应用程序。我希望我的程序是独立的。我还知道每个系统都是非常具体的,所以我对 UNIX/Linux 兼容性感兴趣。

如何解决?只需进入源目录并在目标目录中创建一个新目录并在其中复制文件,或者有更好的解决方案吗?

顺便说一句,我的目标是:将所有第一级子目录递归复制到目标目录中(如果它们不存在)

最佳答案

您确实需要某种递归下降到目录树中。这样做,实际上可以使其非常可移植(在 Linux 上使用 opendir/readdir ,在 Linux 上使用 FindFirstFile/FindNextFile window )。剩下的问题是实际的复制。您可以使用 C 标准库来实现以下算法:

  • 开源文件
  • 打开目标文件
  • 在循环中,从源fread 一个恒定大小的 block ,然后fwrite 将其写入目标。如果源文件不再包含数据则停止

希望这有帮助:)

关于在 Linux/UNIX 上用纯 C 递归复制目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9192295/

相关文章:

linux - 如何使用 Bash 更改类型为 "find"的文件的扩展名?

c - 如何在 R 中创建用于测试和生产环境的单个共享对象(C 语言)

c - XV6-循环调度程序

linux - 使用 grep 检索子字符串

linux - 如何将 awk 用于压缩文件

shell - 提取标签 <t> </t> 之间的数据

c - 在 C 语言中——如何定义以指针作为参数的函数?

c++ - 为什么以及何时应该在 C/C++ 中使用 goto?

linux - Unix:如何删除文件中列出的文件

关闭链接系统中的管道 - Linux C 问题