我正在开发一个需要执行Intersystems Cache Terminal Scripts的系统。
当我在常规Caché终端或telnet终端内运行例程时,Cache执行例程直到结束没有问题。但是当我尝试运行相同的例程,但这次在Caché终端脚本中调用例程时,Caché会在一段时间后断开会话。在“超时”设置的文档中没有任何提及,或者我正在收到的消息中有任何内容。
脚本运行如下:
Cterm.exe /console=cn_iptcp:192.168.2.13[23] c:\test.s
1)是否有人知道可能导致InterystemsCaché在运行过程中断开会话的原因(会话也没有空闲。它会定期向控制台输出状态消息)?
2)有关如何解决它的任何想法?
谢谢,
路易斯·费尔南多答案 0 :(得分:2)
过了一会儿,我终于发现为什么会话被终止了。您必须在最后等待某事或脚本才会终止。但是你必须确保你所等待的字符串不会在代码完成之前打印出来。
所以,我刚刚更改了程序,只在最后打印“Operation finished”,然后把这行:
waitfor "Operation finished"
terminate
现在程序不会中断。
干杯,
路易斯
答案 1 :(得分:1)
是否有可能不是超时,还有其他一些问题?可能是没有被捕获/记录的运行时错误?
从交互式控制台运行和作为脚本之间的主要区别在于,当您以交互方式运行时,您处于程序员模式,但在脚本中您处于用户模式。我想不出任何理由,为什么这很重要,但可能你的代码对此很敏感。
这里有一些尝试:编写一个非常简单的脚本,除了随时写出一个字符外什么都不做。也许是这样的:
F I = 1:1:360 H 10 W“。” ;每隔10秒写一个点1小时
如果它也超时,那么你知道它是终端,而不是你的代码。