2009-04-30 65 views
5

我的交互式32位Windows應用程序(現在正在從Delphi [Ent] 2007移至2009年)使用命令行交互來產生執行計算密集型任務的子進程,進而編寫GUI父應用程序解析的文本文件,分析 - 導致交互式圖形顯示結果。如何從Windows應用程序產生Linux進程?

我可以訪問多處理器(多用戶)Linux羣集(通過ssh),並且想要卸載該羣集的繁重工作。我的問題是如何從我的Windows應用程序中產生Linux中的進程。我可以設想使用安全的FTP來放置和獲取文件,但不知道如何在Linux中產生子進程。

進一步閱讀的一些線索會很好 - 但代碼/僞代碼將是理想的。我可以想象,這可能比Delphi更多地涉及Windows-Linux交互。

回答

6

如果您有權訪問ssh,則有一個選項是通過該命令發出命令。 例如:

ssh [email protected] ls -l ~ 

將在SSH終端顯示在用戶的主目錄中的文件。我不確定這是不是你真正想要的。但它可能會奏效。

如果你這樣做,你幾乎可以肯定要設置SSH password less logins

然而,更理想的解決方案可能是建立在Linux的盒子,其唯一的工作一個守護進程在後臺運行特定的長時間運行的任務並讓你稍後獲取結果。

+0

我不知道那種風格的遠程命令 - 無論如何都很容易嘗試。 – Argalatyr 2009-04-30 02:30:50

5

你將不得不在Linux機器上安裝一些東西來運行這個過程。您可能會發現某些可以從Windows安裝和訪問的羣集或批處理作業提交API。您可能必須編寫自定義服務器。如果你可以從Windows驅動一個ssh進程,並且你在Linux端安裝了sshd,你可能可以通過ssh運行所有的東西。但是,我的首選是在Linux端編寫一個web服務或簡單的CGI腳本,這個腳本旨在獲取您的參數和數據,並將結果通過普通的舊http(或https,視情況而定)返回。

這樣或那樣,這將包括不僅僅是在Windows端的編碼。

+0

我同意這可能是最理想的解決方案,但是正如你所建議的那樣,它爲我提供了更多的學習曲線 - 這可能是一個長期的好事! – Argalatyr 2009-04-30 02:32:18

+2

+1使用自定義服務器有很多優點。尤其是(取決於用於編寫它的語言),可以在Windows(本地)上編寫和調試東西,然後將其部署到很多不同的平臺上,即使沒有sshd。如果你使用FPC或Mono,你可以利用你的Pascal/Delphi知識,所以你有一個良好的開端。它還有一個好處,即控制過程和讀取/寫入數據使用相同的機制。更容易在多處理器服務器節點上擴展。 – mghie 2009-04-30 04:19:21

+1

Argalatyr - 您不必過早編寫定製服務器,您必須安裝nginx或lighttpd並將它們設置爲通過CGI或FastCGI接口在給定路徑上調用您的工作應用程序。服務器會關心運行許多工作應用程序,並在不再需要時關閉它們。我想你最好學習nginx而不是ssh。如果基於文本的HTTP會膨脹數據,那麼如果客戶端庫和服務器都有能力,則HTTP支持透明Zip/Unzip。 – 2012-09-26 09:45:59

5

我會下載完整的「膩子」包。

除了優秀的安全Shell外,還包括PSCP安全傳輸文件和PLINK通過SSH遠程執行命令。

提示:您需要設置PLINK的完整公鑰/私鑰配置才能在沒有惱人的密碼提示的情況下工作。有一個有用的指導http://unixwiz.net/techtips/putty-openssh.html這裏。

+0

我使用膩子,但忽略了plink - 非常有幫助,謝謝。 – Argalatyr 2009-04-30 02:30:21

相關問題