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

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to