статический метод 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.19.6/dart-io/Process/start.html