當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。