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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
