Rev 24239 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
\name{system}\alias{system}\alias{unix}\title{Invoke a System Command}\usage{system(command, intern = FALSE, wait = TRUE, input = NULL,show.output.on.console = FALSE,minimized = FALSE, invisible = FALSE)}\arguments{\item{command}{the system command to be invoked, as a string.}\item{intern}{a logical, indicates whether to make the output of thecommand an \R object.}\item{wait}{should the \R interpreter wait for the command to finish?The default is to wait, and the interpreter will always wait if\code{intern = TRUE}.}\item{input}{if a character vector is supplied, this is copied onestring per line to a temporary file, and the standard input of\code{command} is redirected to the file.}\item{show.output.on.console}{a logical, indicates whether to capturethe output of the command and show it on the \R console (not usedby \code{Rterm}, which captures the output unless \code{wait}is false).}\item{minimized}{a logical, indicates whether the command windowshould be initially displayed as a minimized window.}\item{invisible}{a logical, indicates whether the command windowshould be visible on the screen.}}\description{\code{system} invokes the system command specified by \code{command}.}\value{If \code{intern = TRUE}, a character vector giving the output of thecommand, one line per character string. If the command could not berun or gives an error a \R error is generated.(Output ines of more that 8096 characters will be split.)If \code{intern = FALSE}, the return value is a error code, given theinvisible attribute (so needs to be printed explicitly). If thecommand could not be run for any reason, the value is \code{-1} andan \R warning is generated. Otherwise if \code{wait = FALSE} the valueis the error code returned by the command, and if \code{wait = TRUE}it is the zero (the conventional success value),If \code{intern = FALSE} and \code{show.output.on.console = TRUE}the text output from a command that is a console application willappear in the \R console (\code{Rgui}) or the window running \R(\code{Rterm}).}\details{\code{cmd} is parsed as a command plus arguments separated by spaces.So if the path to the command contains spaces, it must be quoted.See the examples.The command is run directly as a Windows command by the Windows APIcall \code{CreateProcess}: extensions of \code{.exe}, \code{.com},\code{.cmd} and \code{.bat} are tried in turn if noneis supplied. (To use DOS internal commands use\code{paste(Sys.getenv("COMSPEC"),"/c",cmd)}.)The search path for \code{command}may be system-dependent: it will include the \R \code{bin}directory, the working directory and the Windows system directoriesbefore \code{PATH}.Precisely what is seen by the user depends on whether \code{Rgui} or\code{Rterm} is being used. For \code{Rgui} a new console willalways be used, so a commands window will appear for the duration ofconsole applications unless \code{invisible} is true. For\code{Rterm} a separate commands windowwill appear for console applications only if \code{wait = FALSE}.\code{unix} is a \emph{deprecated} alternative, available forbackwards compatibility.}\section{Warning}{The command cannot be interrupted by the \R process.Do not run console applications that require userinput from \code{Rgui} setting \code{intern = TRUE} and/or\code{show.output.on.console = TRUE}. They will not work,may hang and then will probably hang \code{Rgui} too.}\seealso{\code{\link{shell}} or \code{\link{shell.exec}} for a less rawinterface.}\examples{# launch an editor, wait for it to quit\dontrun{system("notepad myfile.txt")}# launch a Windows 9x process monitor (from Win9x KernelToys)\dontrun{system("wintop", wait = FALSE)}# launch your favourite shell:\dontrun{system(Sys.getenv("COMSPEC"))}\dontrun{system(paste('"c:/Program Files/Netscape/Netscape 6/netscp6.exe"','-url cran.r-project.org'), wait = FALSE)}}\keyword{interface}\keyword{file}\keyword{utilities}