当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R system2 调用系统命令


R语言 system2 位于 base 包(package)。

说明

system2 调用command 指定的操作系统命令。

用法

system2(command, args = character(),
        stdout = "", stderr = "", stdin = "", input = NULL,
        env = character(), wait = TRUE,
        minimized = FALSE, invisible = TRUE, timeout = 0,
        receive.console.signals = wait)

参数

command

要调用的系统命令,作为字符串。

args

command 的参数的字符向量。

stdout , stderr

其中输出到‘标准输出' 或者 '标准错误’应该被发送。可能的值为"",到R控制台(默认),NULL或者FALSE(丢弃输出),TRUE(捕获字符向量中的输出)或命名文件的字符串。

stdin

输入应该被转移吗? "" 表示默认值,也可以是命名文件的字符串。如果提供input,则忽略。

input

如果提供了字符向量,则每行将一个字符串复制到临时文件,并且 command 的标准输入将重定向到该文件。

env

用于设置环境变量的 name=value 字符串的字符向量。

wait

一个逻辑的(不是NA)表明是否R解释器应该等待命令完成,或者异步运行它。如果出现以下情况,这将被忽略(并且解释器将始终等待):stdout = TRUE或者stderr = TRUE。异步运行该命令时,屏幕上不会显示任何输出RguiWindows 中的控制台(它将被删除)。

timeout

超时(以秒为单位),如果为 0,则忽略。这是在单独进程中运行 command 所用时间的限制。秒的小数部分将被忽略。

receive.console.signals

一个逻辑的(不是NA)指示命令是否应该从终端/控制台接收事件R运行自,特别是是否应该被中断Ctrl-C。这将被忽略,并且事件将始终被接收intern = TRUE或者wait = TRUE.

minimized , invisible

在 Windows 上接受但在此平台上忽略的参数,并带有警告。

细节

system 不同,command 始终由 shQuote 引用,因此它必须是不带参数的单个命令。

有关如何找到command的详细信息,请参阅system

在 Windows 上,env 仅支持 Rmake 等在命令行上接受环境变量的命令。

某些 Unix 命令(例如 ls 的某些实现)如果认为输出是通过管道传输或重定向的,则会更改其输出:stdout = TRUE 使用管道,而 stdout = "some_file_name" 使用重定向。

由于其实现方式,在类 Unix 上 stderr = TRUE 意味着 stdout = TRUE :如果这不是指定的内容,则会发出警告。

timeout 不为零时,命令将在给定秒数后终止。终止适用于典型命令,但不能保证:可以编写一个在超时后继续运行的程序。超时只能使用 wait = TRUE 设置。

超时不能与交互式命令一起使用:该命令使用从 /dev/null 重定向的标准输入运行,并且不得修改终端设置。只要 tty tostop 选项被禁用(通常默认情况下),执行的命令可能会写入标准输出和标准错误。

receive.console.signals = TRUE 在运行异步进程(使用 wait = FALSE )来实现同步操作时很有用。在所有其他情况下,建议使用默认值。

如果stdout = TRUE或者stderr = TRUE,给出命令输出的字符向量,每个字符串一行。 (超过 8095 字节的输出行将被分割。)如果该命令无法运行,R产生错误。如果command运行但给出非零退出状态,这将在属性中报告并带有警告"status"结果的:一个属性"errmsg"也可能可用。

在其他情况下,返回值是错误代码(0为成功),鉴于base invisible属性(因此需要显式打印)。如果该命令因任何原因无法运行,则该值为127并发出警告(从R3.5.0)。否则如果wait = TRUE该值是命令返回的退出状态,如果wait = FALSE这是0(常规成功值)。

如果命令超时,则会发出警告,退出状态为 124

注意

system2 是比 system 更便携、更灵活的接口。它允许重定向输出,而无需在 Windows 上调用 shell,这是一种为 command 的执行设置环境变量的可移植方法,以及对 stdoutstderr 的重定向进行更精细的控制。相反,system(以及 Windows 上的shell)允许调用任意命令行。

如果stdoutstderr 都是TRUE 或同一个文件,则不能保证这两个流将按顺序交错。这取决于命令和操作系统使用的缓冲。

也可以看看

system

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Invoke a System Command。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。