Invoke a System Command
system2 invokes the OS command specified by
system2(command, args = character(), stdout = "", stderr = "", stdin = "", input = NULL, env = character(), wait = TRUE, minimized = FALSE, invisible = TRUE)
- the system command to be invoked, as a character string.
- a character vector of arguments to
- stdout, stderr
- where output to stdout or
stderr should be sent. Possible values are
"", to the R console (the default),
TRUE(capture the output in a character vector) or a character string naming a file.
- should input be diverted?
""means the default, alternatively a character string naming a file. Ignored if
- if a character vector is supplied, this is copied one
string per line to a temporary file, and the standard input of
commandis redirected to the file.
- character vector of name=value strings to set environment variables.
- a logical (not
NA) indicating whether the R interpreter should wait for the command to finish, or run it asynchronously. This will be ignored (and the interpreter will always wait) if
stdout = TRUE.
For details of how
command is found see
env is only supported for commands such as
Some Unix commands (such as some implementations of
their output if they consider it to be piped or redirected:
stdout = TRUE uses a pipe whereas
"some_file_name" uses redirection.
Because of the way it is implemented, on a Unix-alike
stdout = TRUE: a warning is given if this is
not what was specified.
stdout = TRUEor
stderr = TRUE, a character vector giving the output of the command, one line per character string. (Output lines of more than 8095 bytes will be split.) If the command could not be run an Rerror is generated. If
commandruns but gives a non-zero exit status this will be reported with a warning and in the attribute
"status"of the result: an attribute
"errmsg"may also be available.
In other cases, the return value is an error code (
0for success), given the invisible attribute (so needs to be printed explicitly). If the command could not be run for any reason, the value is
127. Otherwise if
wait = TRUEthe value is the exit status returned by the command, and if
wait = FALSEit is
0(the conventional success value). #ifdef windows Some Windows commands return out-of-range status values (e.g.,
-1) and so only the bottom 16 bits of the value are used. #endif
system2 is a more portable and flexible interface than
system, introduced in R2.12.0. It allows redirection
of output without needing to invoke a shell on Windows, a portable way
to set environment variables for the execution of
finer control over the redirection of
shell on Windows) allows the
invocation of arbitrary command lines.
There is no guarantee that if
stderr are both
TRUE or the same file that the two streams will be interleaved
in order. This depends on both the buffering used by the command and