我需要从 shell 启动,如何退出解释器?

我需要从 shell 启动,如何退出解释器?

我正在使用带有 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)

相关内容