Стд::СредаИсполнения::ПроцессОс
Объект для работы с внешними процессами.
- Объект
ПроцессОС запускает процесс, а не выполняет команды ОС.
Например, в Windows для получения листинга директорий или выполнения команд (dir / mkdir / cp и т.д.)
с помощью консоли (cmd.exe) или интерпретатора (powershell.exe) используется следующий синтаксис:
пер Про цесс = новый ПроцессОс("cmd.exe", ["/c", "copy " + "C:\\example.txt" + " " + "D:\\example.txt"])
Для Linux:
пер Процесс = новый Проц ессОс("cmd.exe", ["/c", "copy " + "~/Documents/example.txt" + " " + "~/Backup/example.txt"])
- При возникновении проблем с кодировкой обратите внимание на следующий пример:
метод ПолучитьВерсиюИсполнителя(): Строка
пер Процесс = новый ПроцессОс("cmd.exe", ["/c", "executor.cmd -v"])
Процесс.Запустить()
возврат Процесс.ПолучитьПотокВывода().ПрочитатьКакСтроку("cp866")
;
==
- Для запуска программ из
PATH:
метод ПолучитьВерсиюJavaИMaven()
пер Процесс1 = новый ПроцессОс("java", ["--version"])
Процесс1.Запустить()
пер Процесс2 = новый ПроцессОс("mvn.cmd", ["-v"])
Процесс2.Запустить()
;
Сравнение
Ссылочное
Иерархия типа
Базовые типы: Объект
Конструкторы
ПроцессОс
ПроцессОс(
Команда: Строка,
СоединитьПотокиОшибокИВывода: Булево = Истина)
Создает процесс с указанной командой запуска
Команда и признаком объединения потоков вывода и ошибок
СоединитьПотокиОшибокИВывода.
Созданный процесс не запускается.
Перегрузка
ПроцессОс(Команда: Строка, Аргументы: ЧитаемыйМассив<Объект>, СоединитьПотокиОшибокИВывода: Булево = Истина)
ПроцессОс
Создает процесс с указанной командой запуска
Команда, аргументами
Аргументы и признаком объединения потоков вывода и ошибок
СоединитьПотокиОшибокИВывода.
Созданный процесс не запускается.
Перегрузка
ПроцессОс(Команда: Строка, СоединитьПотокиОшибокИВывода: Булево = Истина)
Свойства
ПотокиОшибокИВыводаСоединены
ТолькоЧтение
ПотокиОшибокИВыводаСоединены: Булево
Определяет, соединены ли потоки ошибок и вывода:
Истина - ошибки пишутся в поток вывода.
Ложь - ошибки пишутся в поток ошибок.
Методы
Живой
Проверяет, жив ли запущенный процесс.
Запустить
Запустить(Каталог: Строка? = Неопределено)
Запускает созданный процесс или конвейер процессов.
Каталог - рабочий каталог запускаемого и дочерних процессов.
ОжидатьЗавершения
Ожидает завершения выполнения одного из условий:
- внешний процесс завершился,
- прошло заданное количество секунд
Длительность (если задано).
Возвращает Ложь, если внешний процесс не завершился за указанное время Длительность.
Остановить
Останавливает созданный процесс.
ПередатьВыводВ
Добавляет новый процесс на основе команды
Команда и аргументов
Аргументы в конвейер (
pipe).
К процессу в конвейере будут применены те же настройки, что и к исходному
ПроцессОс.
Возвращает текущий экземпляр
ПроцессОс, в котором выходной поток соответствует выходному потоку нового процесса.
Примеры
метод ПросмотретьПапкуИНайтиПодстроку(ПапкаДляПросмотра: Строка, Фильтр: Строка)
пер Процесс = новый ПроцессОс("cmd.exe", ["/c", "dir %ПапкаДляПросмотра"])
Процесс.ПередатьВыводВ("cmd.exe", ["/c", "findstr " + Фильтр])
Процесс.Запустить()
;
ПолучитьPid
Возвращает идентификатор процесса в операционной системе, либо
Неопределено, если получение
PID'а невозможно.
ПолучитьКодВозврата
ПолучитьКодВозврата(): Число?
Возвращает код возврата от внешнего процесса.
Код
0 считается нормальным завершением внешнего процесса.
ПолучитьПотокВвода
Чтобы процесс перестал ожидать входные данные, закройте полученный поток ввода.
Возвращает ПотокЗаписи для передачи входных данных в ПроцессОс.
Исключения
ИсключениеНедопустимоеСостояние - если метод вызван до запуска процесса.
Примеры
метод Grep(Вход: Строка, Фильтр: Строка): Строка
пер Процесс = новый ПроцессОс("cmd.exe", ["/c", "findstr %Фильтр"])
Процесс.Запустить()
пер Поток = Процесс.ПолучитьПотокВвода()
Поток.Записать(Вход)
Поток.Закрыть()
возврат Процесс.ПолучитьПотокВывода().ПрочитатьКакСтроку()
;
ПолучитьПотокВывода
- Для передачи вывода одного процесса в другой используйте возможности конвейера (см.
ПередатьВыводВ()).
Возвращает выходной поток из внешнего процесса.
Используется для получения результата от процесса.
В поток по умолчанию также пишутся ошибки, произошедшие во время работы процесса.
Для получения данных всего потока вывода, нужно дождаться завершения выполнения процесса (метод ОжидатьЗавершения(...)).
Исключения
ИсключениеНедопустимоеСостояние - если метод вызван до запуска процесса.
ПолучитьПотокОшибок
Не требует закрытия.
Возвращает поток ошибок процесса.
Если потоки ошибок и вывода соединены, будет возвращен пустой поток.
Для получения данных всего потока выво да, нужно дождаться завершения выполнения процесса (метод ОжидатьЗавершения(...)).
Исключения
ИсключениеНедопустимоеСостояние - если метод вызван до запуска процесса.
Список унаследованных методов
Объект
ВСтроку
ПолучитьТип
Представление