我正在编写一个通过网络传输文件的C程序。我计划使用rsync进行实际的文件传输。 rsync源代码可在此免费获取:https://rsync.samba.org/download.html
在将其整合到我的程序方面,我可以想到两种方式。
编译rsync并在我的程序中运行可执行文件execv("rsync", some_args);
重命名rsync的main()
并从我的程序中调用新函数。
每种方法的优点和缺点是什么,还有另一种我没有的方法吗?
我知道选项2意味着在程序执行的设置和拆除时发生的通常事情不会发生,因此可能是不可靠的。但是,如果我有源代码,忽略它以支持仅运行可执行文件似乎很愚蠢。
答案 0 :(得分:3)
如果正确完成,这两种方法都有效。所以选择取决于你想做什么。
但请考虑一下:
源代码适用于许多具有修改和重用许可证的开源项目。但这并不意味着你应该分叉源并重用它。
维护是任何此类代码重复的主要问题。如果您复制rsync
源代码并进行集成,那么您必须自己维护它,或者在实际源代码中修复任何错误时对其进行修补,并对功能实现,优化等进行修复。
通常,“整合”可能不是一项简单的任务。根据代码大小,这可能是一项相当大的工作。
所以,除非你真的需要拥有自己的rsync
实现,否则我建议不选择2并且总是更喜欢标准实用程序/库。