我需要杀死一个远程KDB会话 . 这可以通过多种方式完成,但我更喜欢使用IPC处理程序 .
我开始一个KDB会话:
$ q -p 5000
KDB+ 3.0 2012.11.13 Copyright (C) 1993-2012 Kx Systems
然后我开始另一个KDB会话,我设法成功杀死服务器:
$ q
KDB+ 3.0 2012.11.13 Copyright (C) 1993-2012 Kx Systems
q)h: hopen `::5000
q)h(exit;0)
'close
q)\\
但是,如果我使用上面的说明创建一个脚本(test.q),它将失败:
$ cat test.q
h: hopen `::5000
h(exit;0)
\\
$ q test.q
KDB+ 3.0 2012.11.13 Copyright (C) 1993-2012 Kx Systems
k){0N!x y}
'close
@
"q"
"h(exit;0)"
q))
有任何想法吗?我真的很感激 .
2 回答
您正在向远程服务器发出同步请求,这意味着您需要响应 . 问题是您的请求导致远程服务器立即关闭并关闭连接,从而导致错误并导致q进入调试模式 .
如果您只想将退出发送到远程服务器而不会导致错误,则可以使用连接句柄的负值异步发送请求(请注意缺少“关闭错误”):
我设法通过使用Protected Evaluation来解决这个问题:
在 test.q 文件中: