R.utils :: withTimeout, работает на Linux иначе, чем на Windows - PullRequest
0 голосов
/ 14 февраля 2020

Я столкнулся с некоторой проблемой.

У меня есть код, который я сделал на Windows, и сейчас я пытаюсь использовать его на Linux (Ubuntu).

Cost.optim_D.kill<- function(x,RunFile,showLogFile,PathToDaisy,ctrldaisy){

tryCatch(R.utils::withTimeout(Cost.optim_D(x,RunFile,showLogFile,PathToDaisy,ctrldaisy),
                              timeout = 60,
                              onTimeout="error"),
         error = function(ex) {

           PID<-system(paste0('pgrep daisy', Sys.getpid()))

           KILL.daisy <- paste0('kill -9 ',PID)

           system(KILL.daisy)

           daisy_new <- paste0("/opt/daisy/bin/daisy", Sys.getpid())

           if(file.exists(daisy_new)){file.remove(daisy_new)}

           return(runif(1,200,1000))
         })}

Функциональность кода для выполнения внешней программы, и если эта программа выполняется дольше 60 секунд, то withTimeout, выдает ошибку, и tryCatch, выполняют системную функцию процесса убийства.

Эта функция хорошо работает на * Среда 1011 *, но в Linux, withTimeout не выдает ошибку после ограничения по времени, пока работает внешняя Программа.

...