В R я столкнулся с этой неприятной проблемой. Я не уверен, является ли это ошибкой или как избежать этого поведения.
Нажатие ^ C на консоли R (протестировано на Linux) убьет фоновые задания. См. Следующие примеры:
Пример 1 - использование канала:
conn1 <- pipe("ts | tee LOG.txt", open = "wt") # ts is from package moreutils
sink(conn1)
sink(conn1, type = "message")
1
# Apr 16 23:17:43 [1] 1
2
# Apr 16 23:17:46 [1] 2
Каждый выход отправляется на консоль LOG.txt и с отметкой времени , Теперь нажмите ENTER и Ctrl- C:
3
4
# you get no output because the pipe got killed!
Пример 2 - запуск другого процесса R в фоновом режиме (используется, например, в doRedis / startLocalWorkers ()):
system("R --slave -e 'while (TRUE) { A <- rnorm(100000); Sys.sleep(0.05) }'", wait = FALSE)
# Loading required package: stats
Вы видите, как работает процесс. Теперь нажмите ENTER и Ctrl- C:
# Execution halted
Это функция или ошибка? Определенно не желательно. Также не обычно (например, bash также не убивает фоновый процесс с помощью Ctrl- C). Как заставить Ctrl- C до не убивать фоновые процессы в R?
Протестировано на версии R 3.6.0 (2019-04-26), CentOS Linux выпуск 7.6 .1810 (ядро).