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