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

时间:2016-01-21 12:46:15

标签: c open-source rsync

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

在将其整合到我的程序方面,我可以想到两种方式。

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

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

  3. 每种方法的优点和缺点是什么,还有另一种我没有的方法吗?

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

1 个答案:

答案 0 :(得分:3)

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

但请考虑一下:

源代码适用于许多具有修改和重用许可证的开源项目。但这并不意味着你应该分叉源并重用它。

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

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

所以,除非你真的需要拥有自己的rsync实现,否则我建议选择2并且总是更喜欢标准实用程序/库。