Please note there is parallel::mcparallel/mccollect in R which provides similar functionality, mcparallel starts a new job and mccollect allows to wait for it.
You are right about _exit, but there are additional issues which cannot be solved independently in an external package, and, such a low level interface cannot be used without race conditions from R anyway. Best Tomas On 11/09/2017 02:55 AM, danlrobertso...@gmail.com wrote: >> tempdir(). I think it happens because the forked process shares the >> value of tempdir() with the parent process and removes it when it >> exits. > This is very likely the case. Pretty much the entire library can be > summed up by bfork_fork, which is the following. > > SEXP res; > pid_t pid; > if((pid = fork()) == 0) { > PROTECT(res = eval(lang1(fn), R_GlobalEnv)); > PROTECT(res = eval(lang2(install("q"), mkString("no")), > R_GlobalEnv)); > UNPROTECT(2); > } > > return ScalarInteger(pid); > > I wrote this lib when I was still in school and can see several issues > with the implementation of `bfork_fork`. This issue happens because > we do not exit with _exit, but by essentially calling q("no"). > > Cheers, > > Dan > > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel