2011-02-05 2 views
0

Я пытался запустить файл через скрипт оболочки и записать его вывод в этот файл.Запуск Prolog Sicstus через файл оболочки

Сценарий очень прост:

/usr/local/sicstus4.1.1/bin/sicstus -l запустить --goal "Runh ('примеры/calls_matlab.pl', S), привал." > "/ Users/Andrew/Dropbox/IP/моделирование фазы/Rules.txt"

Однако, когда я запускаю это, она не со следующей ошибкой: sicstus (24883,0x7fff70916ca0) таНос: * ошибка для объекта 0x10082b408: некорректная контрольная сумма для освобожденного объекта - объект, вероятно, был изменен после освобождения. * установить точки останова в malloc_error_break для отладки

С другой стороны, если я удалю «привал» от цели, все хорошо, но Sicstus все еще работает.

Есть ли способ выйти из сикстуса, не допуская ошибки выше через мой сценарий оболочки?

Я ценю ваше время.

Andreas

+0

Это пахнет ошибкой в ​​мостике SICStus-Matlab. Жалуйтесь тому, кто это написал. –

+0

сгенерированный файл matlab совершенно прав. на самом деле, если я запустил его в прологе (без скрипта оболочки, все в порядке). причиной ошибки является остановка сразу после запуска цели. Я подозреваю, что он пытается остановиться, прежде чем заканчивать запись вывода в текстовый файл. Я не могу подумать об альтернативном решении :( – kkudi

ответ

1

Что делать, если вы запустите скрипт и перенаправлять входную трубу с /dev/null? И удалите опцию halt.

/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 мой предикат, который возвращает к раковине.

Cheers, Dan

Смежные вопросы