我需要杀死远程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))
有什么想法吗?我真的很感激。
答案 0 :(得分:5)
您正在向远程服务器发出同步请求,这意味着您需要响应。问题是您的请求导致远程服务器立即关闭并关闭连接,从而导致错误并导致q进入调试模式。
如果您只想在不引起错误的情况下向远程服务器发送退出,则可以使用连接句柄的负值异步发送请求(请注意缺少“关闭错误”):
q)h: hopen `::5000
q)(neg h) (exit;0)
q)\\
答案 1 :(得分:2)
答案 2 :(得分:0)
您可能想尝试异步。另外,如果需要,您可以尝试延迟异步 (neg h)({exit 0};`)[]
答案 3 :(得分:0)
您可以选择显式关闭会话并丢弃句柄:
h: hopen `:hostname:port <BR>
h <BR>
h:hclose <BR>
h<BR>