静态方法 run

返回类型 Future<ProcessResult> run(
  1. String executable,
  2. List<String> arguments,
  3. {String? workingDirectory,
  4. Map<String, String>? environment,
  5. bool includeParentEnvironment = true,
  6. bool runInShell = false,
  7. Encoding? stdoutEncoding = systemEncoding,
  8. Encoding? stderrEncoding = systemEncoding}
)

启动一个进程并以非交互方式运行到完成。进程运行的是 executable,带有指定的 arguments

建议为 executable 使用绝对路径,因为解析 executable 路径是平台特定的。在 Windows 中,无论是 environment 映射参数中设置的任何 PATH 还是在 workingDirectory 参数中设置的路径,都忽略以解析 executable 路径。

使用 workingDirectory 为进程设置工作目录。注意,在某些平台上,在执行进程之前会更改目录,这可能会对使用可执行文件和参数的相对路径产生影响。

使用 environment 为进程设置环境变量。如果没有设置,则继承父进程的环境。目前仅支持 US-ASCII 环境变量,如果传递了范围之外的代码点的环境变量,则可能发生错误。

如果 includeParentEnvironmenttrue,进程的环境将包括父进程的环境,其中 environment 优先。默认为 true

如果 runInShell 为 true,则进程将通过系统 shell 创建。在 Linux 和 OS X 上使用 /bin/sh,而在 Windows 上使用 %WINDIR%\system32\cmd.exe

用于解码 stdoutstderr 到文本的编码通过 stdoutEncodingstderrEncoding 控制。默认编码为 systemEncoding。如果使用 null,则不会发生解码,并且 ProcessResult 将保留二进制数据。

返回一个 Future<ProcessResult>,它完成进程运行的结果,即退出代码、标准输出和标准输入。

以下代码使用 Process.run 在 Linux 上对文件 test.dart 中的 main 进行查找。

var result = await Process.run('grep', ['-i', 'main', 'test.dart']);
stdout.write(result.stdout);
stderr.write(result.stderr);

实现

external static Future<ProcessResult> run(
    String executable, List<String> arguments,
    {String? workingDirectory,
    Map<String, String>? environment,
    bool includeParentEnvironment = true,
    bool runInShell = false,
    Encoding? stdoutEncoding = systemEncoding,
    Encoding? stderrEncoding = systemEncoding});