我正在开发一个需要执行系统间缓存终端脚本的系统。
当我在普通的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小时
如果它也超时了,那么你就知道是终端,而不是你的代码。