2016-01-21 46 views
-1

我正在編寫一個通過網絡傳輸文件的C程序。我打算使用rsync來進行實際的文件傳輸。 rsync源代碼可以在這裏免費獲取:https://rsync.samba.org/download.html將開源程序集成到我自己的C

在將其集成到我的程序中,我可以考慮兩種方法。

  1. 編譯rsync的,在我的程序運行的可執行文件execv("rsync", some_args);

  2. 重命名的rsync的main(),並從我的程序調用新的功能。

每種方法有哪些優點和缺點,有沒有另一種方法,我沒有通過?

我知道選項2意味着在程序執行的設置和拆除過程中發生的常見事情不會發生,因此可能不可靠。但是,如果我有源代碼,忽略它只是簡單地運行可執行文件似乎很愚蠢。

+1

你有沒有考慮過[librsync](https://github.com/librsync/librsync)?它只實現* rsync *的實際壓縮算法,而不是傳輸協議。 – morido

+0

我真的不知道librsync存在。感謝您的鏈接,我會檢查出來。 – Sam

+1

無論你做什麼:**遵循許可條件!**如果連接,你的整個代碼可能會OSS! – Olaf

回答

3

如果正確完成,兩種方法都能正常工作。所以選擇取決於你想要做什麼。

但是考慮:

的源代碼可用於很多開源項目與許可證進行修改並重新使用它們。但這並不意味着你應該分解源代碼並重用它。

維護是任何此類代碼重複中的主要問題。如果您複製rsync源代碼並進行集成,那麼您必須自己維護它,或者在實際源代碼中修復任何錯誤並針對功能實現,優化等相同時修復它。

通常,整合「可能不是一項簡單的任務。根據代碼大小,這可能是一項相當大的工作。

所以,除非你真的真的需要有自己的執行rsync,我會建議去與選項2,總是喜歡標準工具/庫。

+0

嗯。其實我沒有想到這一點。如果我不必維護/重新打補丁,那將會容易得多。謝謝 – Sam

相關問題