c - 将开源程序集成到我自己的 C 语言中

标签 c open-source rsync

我正在编写一个通过网络传输文件的 C 程序。我计划使用 rsync 进行实际的文件传输。 rsync 源代码可以在这里免费获得:https://rsync.samba.org/download.html

就将其集成到我的程序中而言,我可以想到两种方法。

  1. 编译 rsync 并在我的程序中运行可执行文件 execv("rsync", some_args);

  2. 将 rsync 的 main() 重命名为并从我的程序中调用新函数。

每种方法的优缺点是什么?还有其他我没有想到的方法吗?

我知道选项 2 意味着在程序执行的设置和拆卸过程中发生的常见事情不会发生,因此可能不可靠。但是,如果我有源代码,忽略它而只运行可执行文件似乎很愚蠢。

最佳答案

如果操作正确,这两种方法都会起作用。所以选择取决于你想做什么。

但请考虑:

许多开源项目都可以获得源代码,并获得修改和重用它们的许可。但这并不意味着您应该 fork 源代码并重用它。

维护是任何此类代码重复的主要问题。如果您复制 rsync 源代码并集成,那么您必须自己维护它,或者在实际源代码中修复任何错误时对其进行实时修补,并且对于功能实现、优化等也是如此。

总的来说,“整合”可能不是一个简单的任务。根据代码大小,这可能是一项相当大的工作。

因此,除非您确实需要自己实现 rsync,否则我建议不要选择选项 2,并且始终更喜欢标准实用程序/库。

关于c - 将开源程序集成到我自己的 C 语言中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34924248/

相关文章:

c - 指向带函数的二维数组的指针

c - 一旦对命令行参数使用 printf() ,它们会发生什么?

c - atomic_dec_if_positive 是如何原子化的?

open-source - 如何处理死掉的开源依赖?

open-source - 在应用程序中使用GPL v2 DLL

terraform - 如何在 Terraform Apply 命令中提供 .tf 文件作为输入?

shared-libraries - 原生 rsync 库?

c - c中的文件输入输出流

python - 任何人都可以将此 rsync 命令解析为与 asyncio.subprocess 一起使用的列表吗?

linux - 复杂的 rsync 过滤(包括和排除)