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


Dart Process用法及代碼示例


dart:io 庫中Process 類的用法介紹如下。

執行程序的手段。

使用靜態 startrun 方法啟動新進程。 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 stdoutProcess 的標準輸出流進行交互,並且可以通過 getter stdinProcess 的標準輸入流進行交互。此外,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.dev大神的英文原創作品 Process class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。