If you are on a Unix-like machine try using the setsid command to run your command in a 'session' of its own. E.g.,
> z <- pipe("setsid /usr/bin/yes", open="r") > length(readLines(z, n=1e6)) [1] 1000000 > # hit control-C > length(readLines(z, n=1e6)) [1] 1000000 > length(readLines(z, n=1e6)) [1] 1000000 > close(z) as opposed to > z <- pipe("/usr/bin/yes", open="r") > length(readLines(z, n=1e6)) [1] 1000000 > # hit control-C > length(readLines(z, n=1e6)) # this reads what is left in the stdin buffer [1] 34240 > length(readLines(z, n=1e6)) [1] 0 > close(z) Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > -----Original Message----- > From: r-devel-boun...@r-project.org [mailto:r-devel-boun...@r-project.org] On > Behalf > Of Rong lI Li > Sent: Tuesday, July 02, 2013 8:46 AM > To: r-devel@r-project.org > Subject: [Rd] Ctrl+C in R will terminate the child process which is spawned > by using "pipe" > > > Hi, all, > > I pressed Ctrl+C in R process, and found that the child process which was > spawned by using "pipe" is terminated due to this. > Are there any way to work around it, so that the child process can run > happily without being terminated? Or can we block the signal for the child > process? > > 1. I used pipe to spawn one C++ process, which will running in a loop > without exiting immediately. > > z <- pipe("./mytest", open = "r+") > > z > description class mode text opened can read > "./mytest" "pipe" "r+" "text" "opened" "yes" > can write > "no" > > 2. When I press "Ctrl+C" in the current R shell, I found the forked child > process was also terminated. Are there any way to work around it? > > ===================== > > Rong "Jessica", Li (ÀîÈÙ) > Platform Symphony TET, CSTL, IBM Systems &Technology Group, Development > Tel:86-10-82451010 Email:rong...@cn.ibm.com > [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel