2013-12-07 47 views
1

我試圖用FUSE和python(特別是fusepy)實現類似於Dropbox的東西。我想到了兩種不同的方法。如果可以完成,我更喜歡方法1。以編程方式在FUSE中發出命令?

  1. 我想有一個客戶機/服務器模型,其中客戶端通過HTTP發送命令行請求到服務器(例如客戶端發送字符串「LS」或「CD」,...等) 。實現FUSE的服務器應在接收到命令行請求時處理它,並將結果發送回客戶端。 爲了做到這一點,我需要能夠以編程方式向服務器上的FUSE實施發出諸如「ls」之類的命令。 有沒有辦法做到這一點?我可以綁定服務器的FUSE實現來將某些文件/流/輸入視爲終端/命令行嗎?我正在考慮在客戶端上交替實現FUSE,並通過HTTP發送系統調用請求(例如,客戶端通過HTTP發送字符串'chmod'或'read',並在請求中使用適當的參數以及)。這種方法似乎效率較低,因爲每個系統調用都會提出一個請求,而不是在第一種方法中對命令行請求中的系統調用進行批處理。但是,從我所看到的情況來看,似乎在編程上在服務器的FUSE實現中調用系統調用並不困難。 如果第一種方法無法完成,我如何以編程方式在FUSE實施中調用系統調用?

最後,這是完全不同的方式嗎?這些只是我解決問題的兩個想法,但也許還有其他一些可以更好地實現客戶端/服務器FS的東西。 (Dropbox如何做到這一點?)

回答

1

原來,我真正應該做的是打電話subprocess.check_output(...)。保險絲處理系統調用,而不是終端命令。應該通過操作系統的內核來完成從命令行到系統調用的轉換。在這種情況下,我向操作系統請求輸出,並將該字符串返回給客戶端。

相關問題