2011-02-05 61 views
0

我一直在試圖通過shell腳本運行文件並將其輸出寫入該文件。通過shell文件運行Prolog Sicstus

該腳本是非常簡單的:

/usr/local/sicstus4.1.1/bin/sicstus -l運行--goal 「RUNH( '的例子/ calls_matlab.pl',S),停止」。 > 「/用戶/安德魯/ Dropbox的/ IP /建模階段/ rules.txt」

然而,當我運行它,它失敗,出現以下錯誤: sicstus(24883,0x7fff70916ca0)的malloc:*錯誤對象0x10082b408:釋放對象的校驗和不正確 - 對象可能在釋放後被修改。 *在malloc_error_break中設置一個斷點來調試

另一方面,如果我從目標中刪除「暫停」,一切正常,但Sicstus仍在運行。

有沒有辦法退出sicstus,而不必通過我的shell腳本導致上述錯誤?

我很感激你的時間。

安德烈亞斯

+0

這氣味在SICStus與Matlab橋中的錯誤。抱怨寫這個人的人。 – 2011-02-05 13:09:17

回答

1

如果你運行你的腳本,並與/dev/null重定向輸入管?並刪除暫停選項。

/usr/local/sicstus4.1.1/bin/sicstus -l run --goal "runh('examples/calls_matlab.pl', S)." > "/Users/Andrew/Dropbox/IP/modelling phase/rules.txt" < /dev/null

我所做的是sicstus -l my_file.pl --goal "test_strategy(10,random,random)." < /dev/null

其中test_strategy是我的謂詞返回到外殼。

乾杯, 丹