dart:io
庫中Process
類的用法介紹如下。
執行程序的手段。
使用靜態 start 和 run 方法啟動新進程。 run 方法以非交互方式執行該過程直至完成。相反, start 方法允許您的代碼與正在運行的進程進行交互。
使用 run 方法啟動一個進程
以下代碼示例使用 run 方法創建一個運行 UNIX 命令 ls
的進程,該命令列出目錄的內容。當進程終止時,run 方法以ProcessResult 對象結束。這提供了對進程的輸出和退出代碼的訪問。 run 方法不返回Process
對象;這可以防止您的代碼與正在運行的進程進行交互。
import 'dart:io';
main() async {
// List all files in the current directory in UNIX-like systems.
var result = await Process.run('ls', ['-l']);
print(result.stdout);
}
使用 start 方法啟動進程
以下示例使用 start 創建進程。 start 方法為Process
對象返回Future。當 future 完成時,進程開始,你的代碼可以與進程交互:寫入標準輸入,監聽標準輸出,等等。
以下示例啟動 UNIX cat
實用程序,當沒有給定 命令行 參數時,它會回顯其輸入。程序寫入進程的標準輸入流並從其標準輸出流打印數據。
import 'dart:io';
import 'dart:convert';
main() async {
var process = await Process.start('cat', []);
process.stdout
.transform(utf8.decoder)
.forEach(print);
process.stdin.writeln('Hello, world!');
process.stdin.writeln('Hello, galaxy!');
process.stdin.writeln('Hello, universe!');
}
標準 I/O 流
如前麵的代碼示例所示,您可以通過 getter stdout 與 Process
的標準輸出流進行交互,並且可以通過 getter stdin 與 Process
的標準輸入流進行交互。此外,Process
提供了一個 getter stderr 用於使用 Process
的標準錯誤流。
Process
的流與當前程序的頂級流不同。
退出代碼
調用exitCode方法獲取進程的退出碼。退出代碼指示程序是成功終止(通常以退出代碼 0 表示)還是出現錯誤。
如果使用 start 方法,exitCode 可通過 Process
對象上的 future 獲得(如下例所示)。如果使用 run 方法,則 exitCode 可通過 ProcessResult 實例上的 getter 獲得。
import 'dart:io';
main() async {
var process = await Process.start('ls', ['-l']);
var exitCode = await process.exitCode;
print('exit code: $exitCode');
}
相關用法
- Dart Process.start用法及代碼示例
- Dart Process.run用法及代碼示例
- 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大神的英文原創作品 Process class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。