0
我試圖建立一個電子學習應用程序如何編譯用戶輸入C程序並在ruby on rails web應用程序中顯示輸出結果?
用戶閱讀教程並嘗試輸入他自己的C程序。
我想讓web應用程序接受此輸入並編譯它,並向用戶顯示相應的輸出。
我很困惑,我應該如何解決這個問題.......有沒有任何預先存在的庫或寶石,或者我應該從頭開始編寫一個編譯器?
我試圖建立一個電子學習應用程序如何編譯用戶輸入C程序並在ruby on rails web應用程序中顯示輸出結果?
用戶閱讀教程並嘗試輸入他自己的C程序。
我想讓web應用程序接受此輸入並編譯它,並向用戶顯示相應的輸出。
我很困惑,我應該如何解決這個問題.......有沒有任何預先存在的庫或寶石,或者我應該從頭開始編寫一個編譯器?
您可能可以使用稱爲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%的解決方案,但它可能會讓您朝正確的方向發展。
我可以給你想法就像在你的應用程序後用戶選擇語言讓'C'他會寫他的代碼......包裝的代碼和使用紅寶石文件'文件'如果它是選擇C然後文件應該是.c擴展名.........在你的控制器中檢查並且'file blank ?'和其他........現在使用'system cc program.c' ......你的應用程序在生產環境中運行的服務器必須已經安裝了c ...使用方法中的選項來訪問編譯選項,比如'-o'等等 –
你打算如何處理那些將[ 'system'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/system.html)在他們的C代碼中調用或分叉炸彈? –
是的....安全將是一個問題,我想我必須在將輸入傳遞給編譯器之前過濾輸入,以便在有人輸入系統調用時拒絕訪問。也許我必須提供權限服務器上的設置。感謝您指出。 –