我正在使用带有 kdb+/q 的 R。为了访问 kdb 中的数据,需要在某个端口的后台运行一个 q 进程。我们通常会运行命令q -p 5000 &
来初始化 q 进程,然后退出 q 解释器。我们遇到的问题是,我们无法以编程方式终止和启动 q 进程。例如,我们有时需要重置连接,因此我们会运行killall -9 q
,然后键入命令q -p 5000 &
,然后键入\\
以退出 q 解释器。
但尝试通过 R 传递这些系统命令最终会引发各种错误。为了尝试启动 q 进程而无需手动输入\\
exit q,我尝试了printf '\\\\' | q -p 5000 &
(以及此命令的几个变体),但没有成功。
答案1
https://code.kx.com/v2/kb/daemon/
这有效。在 RI 中调用:
system("nohup q -p 5000 < /dev/null > /tmp/stdoe 2>&1&")
Sys.sleep(3)
kdb_conn <- rkdb::open_connection('localhost', 5000)