2010-03-12 34 views
0

我想執行A R腳本僅僅作爲如何使用QProcess中或系統

R --file=x.R 

它運行良好,在命令行上調用R'當提取輸出。然而,當我嘗試在C++系統調用由

QProcess::execute("R --file=x.R"); 

system("R --file=x.R"); 

程序R運行和退出,但我不能看到輸出的程序應該產生。如果一個程序不使用標準輸出(比如R),我怎樣在系統調用後將輸出作爲輸出文件或者在程序自己的控制檯中進行讀取?

謝謝你的時間。

回答

1

QProcess允許您捕獲您運行的命令的輸出;但不是通過您使用的靜態函數調用。相反,嘗試這樣的事:

QProcess process; 
process.start("R --file=x.R"); 
process.waitForFinished(); 
QByteArray output = process.readAllStandardOutput(); 
QByteArray error = process.readAllStandardError(); 

當然,做正確的事情,你可能要啓動該進程,然後執行代碼的其餘部分在連接過程中對象的最終信號的插槽。如果你願意的話,你也可以從標準輸出或增量錯誤中讀取。或者你可以設置對象來接收輸出或錯誤作爲這些對象的輸入。

+0

謝謝。但是「輸出」僅包含來自R的歡迎消息,但x.R被忽略或執行,但沒有產生任何結果。 「R --file = x.R」仍然可以在命令行上使用。 – SYK 2010-03-15 13:31:25

+0

@SYK:我的下一個猜測是,它可能是R正在做的事情,它檢測它有什麼樣的輸出可能性,並且只有當它有一個打印終端時纔會輸出。但是,這可能對你沒有多大幫助。 – 2010-03-15 17:52:50