Метод 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.
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.
Реализация
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 BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-io/Process/start.html