我有一個從命令行運行C++可執行文件的Rails應用程序。我可以將C++ cout
打印到命令行,但我想將它分配回Rails控制器中的變量output =
。如何將C++可執行文件的值傳遞給Rails應用程序?
這可能嗎?
下面是我的Rails控制器操作和C++ .cpp
的簡化示例,以幫助解釋該問題。
Rails的控制器:
def get_variable
system("cd ~/workspace/OutputTest/src && ./output.bin")
end
注意我已經編譯和創建了一個名爲output.bin
一個C++的可執行文件。
C++文件:
#include <iostream>
using namespace std;
int main() {
cout << "Hello world!!!";
return 0;
}
我熟悉Rails的(不一定是從運行的Rails通過在命令行中的文件),但一個完整的福利局到C++。
任何指導將非常感激。如果還有另一種方法,我應該完全採取,這也是非常有用的知道。
我寧願不要這樣做,因爲我想在C++中做更多的事情,一旦我可以解決這個初始步驟。
UPDATE
最好的解決辦法,我拿出這麼遠在C++寫一個字符串轉換爲.txt
,然後使用Rails中File.read()
。但它不感覺可伸縮,或者在數據結構上給予靈活性。
所以我仍然想知道是否有更直接的方式,比如保存Rails訪問它的內存值。但不知道。
也許這一個:http://stackoverflow.com/questions/690151/getting-output-of-system-calls-in-ruby?但無論如何,我認爲這可能是一個糟糕的設計,你可能想看看RPC或C到Ruby的包裝器,如swig,它將C函數包裝成ruby。 – lz96
另一種解決方案可能是在Rails中創建偵聽器套接字,然後從C++發送數據到此套接字 –