Ctrl- C убивает фоновые процессы в R - PullRequest
0 голосов
/ 17 апреля 2020

В 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 (ядро).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...