2013-08-27 36 views
0

我試圖建立一個電子學習應用程序如何編譯用戶輸入C程序並在ruby on rails web應用程序中顯示輸出結果?

用戶閱讀教程並嘗試輸入他自己的C程序。

我想讓web應用程序接受此輸入並編譯它,並向用戶顯示相應的輸出。

我很困惑,我應該如何解決這個問題.......有沒有任何預先存在的庫或寶石,或者我應該從頭開始編寫一個編譯器?

+1

我可以給你想法就像在你的應用程序後用戶選擇語言讓'C'他會寫他的代碼......包裝的代碼和使用紅寶石文件'文件'如果它是選擇C然後文件應該是.c擴展名.........在你的控制器中檢查並且'file blank ?'和其他........現在使用'system cc program.c' ......你的應用程序在生產環境中運行的服務器必須已經安裝了c ...使用方法中的選項來訪問編譯選項,比如'-o'等等 –

+0

你打算如何處理那些將[ 'system'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/system.html)在他們的C代碼中調用或分叉炸彈? –

+0

是的....安全將是一個問題,我想我必須在將輸入傳遞給編譯器之前過濾輸入,以便在有人輸入系統調用時拒絕訪問。也許我必須提供權限服務器上的設置。感謝您指出。 –

回答

2

您可能可以使用稱爲RubyInline的寶石。我最近正在研究類似的東西。這可以讓你輸入一個c程序的字符串並運行它。

看看this tutorial,一定要看看那裏的第一條評論。

require 'rubygems' 
require 'RubyInline' 
class Example 
    inline(:C) do |builder| 
    builder.c "int method_test1() { 
     int x = 10; 
     return x; 
    }" 
    end 
end 

p Example.new.method_test1 #This prints out the result of the code, and I believe also errors if there are any 

我知道這不是100%的解決方案,但它可能會讓您朝正確的方向發展。

相關問題