通过shell文件运行Prolog-Sicstus

通过shell文件运行Prolog-Sicstus,shell,prolog,malloc,sicstus-prolog,halt,Shell,Prolog,Malloc,Sicstus Prolog,Halt,我一直试图通过shell脚本运行一个文件,并将其输出写入该文件 脚本非常简单: /usr/local/sicstus4.1.1/bin/sicstus-l run——目标“runh('examples/calls_matlab.pl',S),halt.”>“/Users/Andrew/Dropbox/IP/modeling phase/rules.txt” 但是,当我运行此操作时,它会失败,并出现以下错误: sicstus(24883,0x7fff70916ca0)malloc:*对象0x100

我一直试图通过shell脚本运行一个文件,并将其输出写入该文件

脚本非常简单:

/usr/local/sicstus4.1.1/bin/sicstus-l run——目标“runh('examples/calls_matlab.pl',S),halt.”>“/Users/Andrew/Dropbox/IP/modeling phase/rules.txt”

但是,当我运行此操作时,它会失败,并出现以下错误: sicstus(24883,0x7fff70916ca0)malloc:*对象0x10082b408的错误:已释放对象的校验和不正确-对象可能在被释放后被修改。 *在malloc\u error\u break中设置断点以进行调试

另一方面,如果我把“暂停”从球门上移开,一切都很好,但西卡斯还在跑

有没有一种方法可以退出sicstus,而不必通过我的shell脚本引发上面的错误

谢谢你抽出时间


Andreas

如果运行脚本并使用
/dev/null
重定向输入管道,会怎么样?并删除停止选项

/usr/local/sicstus4.1.1/bin/sicstus-l run——目标“runh('examples/calls_matlab.pl',S)。”>“/Users/Andrew/Dropbox/IP/modeling phase/rules.txt”

我所做的是
sicstus-l my_file.pl——目标“测试策略(10,随机,随机)。”

其中,
test\u strategy
是返回shell的谓词

干杯,
Dan

这在SICStus Matlab桥中有一种臭味。向作者投诉。matlab生成的文件完全有效。事实上,如果我在prolog中运行它(没有shell脚本,一切都很好)。导致错误的是在运行目标后立即停止。我怀疑它试图在将输出写入文本文件之前停止。我想不出替代方案:(