如何防止在运行系统间 Caché 终端脚本时出现<会话断开连接>错误?



我正在开发一个需要执行系统间缓存终端脚本的系统。

当我在普通的Caché终端或telnet终端中运行例程时,Cache会执行该例程,直到最后都没有问题。但是,当我尝试运行相同的例程,但这次在Caché终端脚本中调用该例程时,Caché会在一段时间后断开会话。文档中根本没有提到"超时"设置或任何与我收到的"消息相关的内容。

脚本运行方式如下:

Cterm.exe /console=cn_iptcp:192.168.2.13[23] c:test.s

1) 有人知道是什么原因导致Intersystems Caché在运行过程中断开了会话(会话也不是空闲的。它定期向控制台输出状态消息)?

2) 有什么解决办法吗?

谢谢,

Luís Fernando

过了一段时间,我终于发现了会话被终止的原因。您必须在结尾处等待某些内容,否则脚本将终止。但您必须确保您正在等待的字符串在代码完成之前不会被打印出来。

所以,我只是把程序改为只在最后打印"操作完成",然后放上一行:

 waitfor "Operation finished"
terminate

现在程序不会被中断。

干杯,

Luís

是否有可能不是超时,而是其他问题?可能是未捕获/记录的运行时错误?

从交互式控制台运行和作为脚本运行之间的主要区别在于,当您以交互方式运行时,您处于程序员模式,但在脚本中,您处于用户模式。我想不出为什么这会很重要,但可能你的代码对此很敏感。

这里有一些尝试:写一个非常简单的脚本,除了时不时地写出一个角色之外,什么都不做。也许是这样的:

F I=1:1:360 H 10 W".";每10秒写入一个点,持续1小时

如果它也超时了,那么你就知道是终端,而不是你的代码。

最新更新