Метод start
Future<Process> start(Запускает процесс, выполняющий executable с указанными arguments. Возвращает Future<Process>, которое завершается с объектом Process, когда процесс успешно запущен. Этот объект Process может использоваться для взаимодействия с процессом. Если процесс не может быть запущен, возвращаемое Future завершается с исключением.
Используйте workingDirectory для установки каталога работы для процесса. Обратите внимание, что изменение каталога происходит до выполнения процесса на некоторых платформах, что может повлиять на использование относительных путей для исполняемого файла и аргументов.
Используйте environment для установки переменных среды для процесса. Если не установлены, среда родительского процесса наследуется. В настоящее время поддерживаются только переменные среды US-ASCII, и могут возникнуть ошибки, если передана переменная среды с кодовыми точками, не входящими в диапазон US-ASCII.
Если includeParentEnvironment имеет значение true, среда процесса будет включать среду родительского процесса, при этом environment имеет приоритет. По умолчанию true.
Если runInShell имеет значение true, процесс будет запущен через системную оболочку. В Linux и OS X используется /bin/sh, а в Windows используется %WINDIR%\system32\cmd.exe.
Пользователи должны прочитать все данные, поступающие из потоков stdout и stderr запущенных процессов с помощью Process.start. Если пользователь не прочитает все данные из потоков, системные ресурсы не будут освобождены, так как данные все ещё находятся в ожидании.
Следующий код использует Process.start для поиска main в файле test.dart в Linux.
Process.start('grep', ['-i', 'main', 'test.dart']).then((process) {
stdout.addStream(process.stdout);
stderr.addStream(process.stderr);
});
Если mode имеет значение ProcessStartMode.NORMAL (по умолчанию), дочерний процесс будет запущен с stdin, stdout и stderr подключенными.
Если mode имеет значение ProcessStartMode.DETACHED, будет создан отделённый процесс. Отделенный процесс не имеет связи с родительским и может продолжать работу, даже если родительский процесс завершится. Единственной доступной информацией об отделенном процессе является его pid. Нет соединения с его stdin, stdout или stderr, и код завершения процесса не станет доступен при его завершении.
Если mode имеет значение ProcessStartMode.DETACHED_WITH_STDIO, будет создан отделенный процесс, где stdin, stdout и stderr подключены. Создатель может общаться с дочерним процессом через эти каналы. Отделенный процесс будет продолжать работу, даже если эти каналы связи будут закрыты. Код завершения процесса не будет доступен при его завершении.
Значение по умолчанию для mode равно ProcessStartMode.NORMAL.
Источник
external static Future<Process> start(
String executable, List<String> arguments,
{String workingDirectory,
Map<String, String> environment,
bool includeParentEnvironment: true,
bool runInShell: false,
ProcessStartMode mode: ProcessStartMode.NORMAL});
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-io/Process/start.html