将开源程序集成到我自己的 C 中

Integrating an open source program into my own in C

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

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

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

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

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

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

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

但请考虑:

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

维护 是任何此类代码重复的主要问题。如果您复制 rsync 源代码并集成,那么您必须自己维护它,或者 rte-patch 每当实际源代码中的任何错误得到修复时以及功能实现、优化等相同时

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

所以,除非你真的真的需要自己实现 rsync,否则我建议 不要 选择选项 2 并且总是更喜欢标准 utilities/libraries.