2012-10-24 37 views
2

我在linux中有一個可執行的分水嶺模型,它在執行時從多個輸入文本文件中讀取。當我通過shell找到可執行文件並執行它(沒有根目錄)時,一切正常。但是,我正在編寫一個需要調用可執行文件的C++程序,所以我只是簡單地使用system()。當我這樣做時,模型會執行,但會返回與其中一個主輸入文本文件關聯的「文件結束」運行時錯誤。我不知道爲什麼當我通過shell手動執行程序時,程序會正常執行,但在通過system()命令執行時返回錯誤。當通過linux命令行執行時,可執行文件運行良好 - 通過C++ system()命令調用運行時錯誤

我在猜測沒人會知道問題是什麼,但我不知道從哪裏開始調查。我會很感激任何建議。

謝謝!

我的系統命令是:

system("/home/name/SWAT/olentangy/Scenarios/Default/TxtInOut/swat"); 

我收到的錯誤是:

forrtl: severe (24): end-of-file during read, unit 23, file /home/name/EO_G/EIGHT/EIGHT/file.cio 
Image    PC  Routine   Line  Source    
swat    0821D03F Unknown    Unknown Unknown 
swat    0821BD35 Unknown    Unknown Unknown 
swat    081D78D1 Unknown    Unknown Unknown 
swat    081ABD66 Unknown    Unknown Unknown 
swat    081AB621 Unknown    Unknown Unknown 
swat    081BC9DF Unknown    Unknown Unknown 
+2

請出示您的系統()調用,你得到確切的錯誤信息。我們可以從那裏開始。 –

+0

如何通過system()啓動時指定要處理的文件? – arkascha

+0

嘗試'strace -f -e exevce,打開你的C++程序',看看有沒有什麼突出。 – sigjuice

回答

3

即使swat是它的行爲可以說是越野車,你仍然可以解決它在你的父程序:

替代此項:

system("/home/name/SWAT/olentangy/Scenarios/Default/TxtInOut/swat"); 

與此:

system("cd /home/name/SWAT/olentangy/Scenarios/Default/TxtInOut && ./swat");