6

リモート 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))

何か案は?本当に感謝しております。

4

4 に答える 4

8

リモートサーバーに同期リクエストを送信しています。これは、応答を期待していることを意味します。問題は、リクエストによってリモートサーバーがシャットダウンして接続がすぐに閉じられ、エラーが発生し、q がデバッグモードになることです。

エラーを発生させずにリモート サーバーに終了を送信したいだけの場合は、接続ハンドルに負の値を使用してリクエストを非同期に送信できます ('close エラーがないことに注意してください)。

q)h: hopen `::5000
q)(neg h) (exit;0)
q)\\
于 2013-02-05T03:08:02.067 に答える
4

Protected Evaluationを使用してこれを整理することができました:

test.qファイル:

h: hopen `::5000
@[h; "exit 0"; {}]
\\
于 2013-02-06T22:27:55.730 に答える