Я использую R с kdb +/q. Для доступа к нашим данным в kdb должно быть выполнение q процесс в фоновом режиме на некотором порте. То, что мы обычно делаем, выполняется команда q -p 5000 &
для инициализации процесса q и затем мы выходим из q интерпретатора. Проблема, с которой мы сталкиваемся, состоит в том, что мы не можем программно уничтожить и запустить процессы q. Например, мы иногда должны сбрасывать соединение, таким образом, мы работали бы killall -9 q
и затем введите команду q -p 5000 &
и затем введите \\
выходить из q интерпретатора.
Но попытка передать эти системные команды через R заканчивает тем, что бросила все виды ошибок. Попытаться запустить процесс q, не будучи должен вручную ввести \\
для существования q я попробовал printf '\\\\' | q -p 5000 &
(и несколько вариантов этой команды), но у меня не было удачи.
https://code.kx.com/v2/kb/daemon/
Это работает. В R я звоню:
system("nohup q -p 5000 < /dev/null > /tmp/stdoe 2>&1&")
Sys.sleep(3)
kdb_conn <- rkdb::open_connection('localhost', 5000)