使用 CLIPS c 库,如何更改 Watches 打印/写入的位置?

问题描述 投票:0回答:1

如果我执行类似 Watch(theEnv, FACTS); 的操作,默认情况下此调试会写入 STDOUT,并且看起来我无法更改它。我想将其写入一个单独的文件,我该怎么做?这是在使用。 6.41 剪辑

使用“Watch(theEnv, FACTS);”有内容打印到 STDOUT,但需要写入不同的文件。

clips
1个回答
0
投票

没有机制可以更改手表信息的写入位置。您可以使用 dribble-on/dribble-off 功能来捕获发送到 STDIN/STDOUT 的 I/O,但这将捕获到 STDIN/STDOUT 的所有 I/O。

您必须修改 CLIPS 源代码才能重定向输出。 factmngr.c 中有两个位置打印事实的手表信息:

  WriteString(theEnv,STDOUT,"==> ");
  PrintFactWithIdentifier(theEnv,STDOUT,theFact,changeMap);
  WriteString(theEnv,STDOUT,"\n");

  WriteString(theEnv,STDOUT,"<== ");
  PrintFactWithIdentifier(theEnv,STDOUT,theFact,changeMap);
  WriteString(theEnv,STDOUT,"\n");

您可以将 STDOUT 替换为最初设置为 STDOUT 的 char * 变量,然后添加一个用户定义的函数,该函数允许您将该变量设置为不同的字符串。然后,您可以使用 open 函数打开文件,然后将变量设置为 open 函数中使用的逻辑名称。

© www.soinside.com 2019 - 2024. All rights reserved.