Processx has now better error messages, in particular, all errors from C code contain the file name and line number, and the system error code and message (where applicable).
Processx now sets the
.Last.error variable for every un-caught processx error to the error condition, and also sets
.Last.error.trace to its stack trace.
run() now prints the last 10 lines of the standard error stream on error, if
echo = FALSE, and it also prints the exit status of the process.
run() now includes the standard error in the condition signalled on interrupt.
process now supports creating pseudo terminals on Unix systems.
conn_create_pipepair() gets new argument to set the pipes as blocking or non-blocking.
process does not set the inherited extra connections as blocking, and it also does not close them after starting the subprocess. This is now the responsibility of the user. Note that this is a breaking change.
run() now passes extra
... arguments to
run() now does not error if the process is killed in a callback.
process can now redirect the standard error to the standard output, via specifying
stderr = "2>&1". This works both with files and pipes.
run() can now redirect the standard error to the standard output, via the new
$kill_tree() methods get a
close_connection = TRUE argument that closes all pipe connections of the process.
process$interupt() method to send an interrupt to a process, SIGINT on Unix, CTRL+C on Windows (#127).
connections argument in
process$new() to support passing extra connections to the child process, in addition to the standard streams.
poll_connection argument to
process$new(), an extra connection that can be used to poll the process, even if
stderr are not pipes (#125).
$restart() method, because it was less useful than expected, and hard to maintain (#116).
conn_disable_inheritance() to disable stdio inheritance. It is suggested that child processes call this immediately after starting, so the file handles are not inherited further.
Fixed a signal handler bug on Unix that marked the process as finished, even if it has not (d221aa1f).
Fixed a bug that occasionally caused crashes in
wait(), on Unix (#138).
Fix interference with the parallel package, and other packages that redefine the
SIGCHLD signal handler on Unix. If the processx signal handler is overwritten, we might miss the exit status of some processes (they are set to
Make the debugme package an optional dependency (#74).
processx is now compatible with R 3.1.x.
Fix a race condition on Windows, when creating named pipes for stdout or stderr. The client sometimes didn’t wait for the server, and processx failed with ERROR_PIPE_BUSY (231, All pipe instances are busy).
Fix a crash on windows when trying to run a non-existing command (#90)
Fix a race condition in
processx process objects no longer use R connection objects, because the R connection API was retroactive made private by R-core
processx uses its own connection class now to manage standard output and error of the process.
The encoding of the standard output and error can be specified now, and
stderr in UTF-8.
Cloning of process objects is disables now, as it is likely that it causes problems (@wch).
supervise option to kill child process if R crashes (@wch).
has_error_connection() methods (@wch).
stderr default to
NULL now, i.e. they are discarded (@wch).
Fix undefined behavior when stdout/stderr was read out after the process was already finalized, on Unix.
run(): Better message on interruption, kill process when interrupted.
Unix: better kill count on unloading the package.
Unix: make wait() work when SIGCHLD is not delivered for some reason.
Unix: close inherited file descriptors more conservatively.
Fix a race condition and several memory leaks on Windows.
Fixes when running under job control that does not allow breaking away from the job, on Windows.
This is an unofficial release, created by CRAN, to fix compilation on Solaris.