2010-07-30 74 views
0

我有存儲在服務器上的擴展名爲.cpp的各種文件。當用戶點擊編譯按鈕時,我應該運行gcc命令將文件的絕對路徑傳遞給gcc編譯器,然後向用戶顯示文件的輸出。
我該怎麼做?控制器中的外部命令

+0

我認爲這個問題是關於ruby而不是ruby-on-rails。 – giraff 2010-07-30 21:40:33

回答

1

Kernel.system可能是您正在查找的命令:它調用系統進程。例如:

if (system("gcc ...")) 
    @output_to_show = %x['./compiled'] 
end 

假設你的服務器是Linux/UNIX的,這將是很好的編譯分開&爲了降低安全風險(通過創建一個新的用戶只是從網站服務器上執行過程這個目的)。或者你可以信任cpp-Files的內容嗎?

+0

- 「你可能想要在另一個用戶標識下運行這些進程,只是爲了確保它們不會覆蓋你的一些難得的代碼文件等......」......我無法理解這一點。你能稍微說一下嗎? – 2010-07-30 21:44:56

+0

- 感謝您的幫助。 – 2010-07-31 05:45:31

+0

- 你能解釋代碼中的%x ['./ compiled']部分嗎?如何在編譯過程中得到輸出/錯誤 – 2010-07-31 07:08:42