Gaidatzis, Dimosthenis
2012-Jan-19 11:56 UTC
[Rd] Capturing interrupts during the execution of system/system2
Dear R Team I have a question about the system/system2 command in R on linux. My goal is to run a system command (which can take a long time) and to detect if it was successful or not. If i understood correctly the return value of system should give me exactly this information. However if i try to do this, system returns 0, even if i interrupt the execution with CTRL-C (which is the event i would like to detect). Here is an example (just piping /dev/zero to /dev/null) to illustrate the behavior after pressing CTRL-C.> ret <- system("cat /dev/zero > /dev/null"); print(ret)^C[1] 0 I also tried to use a tryCatch block to detect this event but pressing CTRL-C during the execution of the system command does not result in a capture of this interrupt event. Only releasing resources is called which happens in any case:> tryCatch({+ ret <- system("cat /dev/zero > /dev/null"); print(ret) + }, interrupt = function(ex) { + cat("An interrupt was detected.\n"); + print(ex); + }, error = function(ex) { + cat("An error was detected.\n"); + print(ex); + }, finally = { + cat("Releasing resources..."); + cat("done\n"); + }) ^C[1] 0 Releasing resources...done Is there still a way to find out if the user stopped the R script while the system command was running? R version 2.14.1 (2011-12-22) Platform: x86_64-unknown-linux-gnu (64-bit) Kind regards Dimos Gaidatzis