dart:io
庫中Process.start
方法的用法介紹如下。
用法:
Future<Process> start(
String executable,
List<String> arguments,
{String? workingDirectory,
Map<String, String>? environment,
bool includeParentEnvironment = true,
bool runInShell = false,
ProcessStartMode mode = ProcessStartMode.normal}
)
使用指定的 arguments
啟動運行 executable
的進程。
當進程成功啟動時,返回一個 Future<Process>
並以 Process
實例完成。該Process
對象可用於與進程交互。如果進程無法啟動,則返回的Future 以異常結束。
使用workingDirectory
設置進程的工作目錄。請注意,在某些平台上執行進程之前會發生目錄更改,這可能會在使用可執行文件和參數的相對路徑時產生影響。
使用environment
設置進程的環境變量。如果不設置,則繼承父進程的環境。目前隻支持US-ASCII環境變量,如果傳入code-points超出US-ASCII範圍的環境變量,很可能會出錯。
如果 includeParentEnvironment
是 true
,則進程的環境將包括父進程的環境,以 environment
優先。默認為 true
。
如果 runInShell
是 true
,則該進程將通過係統 shell 生成。在 Linux 和 OS X 上,使用 /bin/sh
,而在 Windows 上使用 %WINDIR%\system32\cmd.exe
。
用戶必須讀取以 Process.start
開頭的進程的 stdout 和 stderr 流上的所有數據。如果用戶沒有讀取流上的所有數據,則不會釋放底層係統資源,因為仍有待處理的數據。
以下代碼使用Process.start
在Linux 上的test.dart
文件中查找main
。
var process = await Process.start('grep', ['-i', 'main', 'test.dart']);
stdout.addStream(process.stdout);
stderr.addStream(process.stderr);
如果 mode
是 ProcessStartMode.normal (默認值),則子進程將在 stdin
、 stdout
和 stderr
連接的情況下啟動。
如果mode
是ProcessStartMode.detached,將創建一個分離的進程。分離的進程與其父進程沒有任何聯係,並且可以在父進程死亡時繼續運行。分離進程中唯一可用的信息是它的 pid
。與它的 stdin
、 stdout
或 stderr
沒有連接,進程的退出代碼也不會在它終止時變得可用。
如果 mode
是 ProcessStartMode.detachedWithStdio 將創建一個分離的進程,其中連接了 stdin
、 stdout
和 stderr
。創作者可以通過這些與孩子交流。即使這些通信通道關閉,分離的進程仍將繼續運行。進程的退出代碼在終止時將不可用。
mode
的默認值為 ProcessStartMode.normal
。
相關用法
- Dart Process.run用法及代碼示例
- Dart Process用法及代碼示例
- Dart Point用法及代碼示例
- Dart PluginArray.last用法及代碼示例
- Dart Point.magnitude用法及代碼示例
- Dart Point.operator_minus用法及代碼示例
- Dart Platform.localeName用法及代碼示例
- Dart Point.distanceTo用法及代碼示例
- Dart Point.operator_equals用法及代碼示例
- Dart Point.squaredDistanceTo用法及代碼示例
- Dart Pattern.matchAsPrefix用法及代碼示例
- Dart Pattern.allMatches用法及代碼示例
- Dart Point.operator_plus用法及代碼示例
- Dart Platform用法及代碼示例
- Dart PluginArray.elementAt用法及代碼示例
- Dart Point.operator_multiply用法及代碼示例
- Dart PluginArray.first用法及代碼示例
- Dart PluginArray.length用法及代碼示例
- Dart MapMixin.containsKey用法及代碼示例
- Dart Iterator用法及代碼示例
- Dart AttributeClassSet.intersection用法及代碼示例
- Dart num.sign用法及代碼示例
- Dart TransformList.last用法及代碼示例
- Dart FileList.first用法及代碼示例
- Dart CanvasRenderingContext2D.drawImageScaledFromSource用法及代碼示例
注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 start method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。