ПроцессОс
Стд::СредаИсполнения::ПроцессОс Базовые типы: Объект |
Иерархия типа
Объект для работы с внешними процессами.
Сравнение ссылочное
Конструкторы
ПроцессОс
Перегрузка: ПроцессОс(КомандаЗапуска: Строка, Аргументы: ЧитаемыйМассив<Объект>, СоединитьПотокиОшибокИВывода: Булево = Истина) |
Создает процесс с указанной командой запуска КомандаЗапуска
и признаком объединения потоков вывода и ошибок СоединитьПотокиОшибокИВывода
. Созданный процесс не запускается.
ПроцессОс
ПроцессОс(
КомандаЗапуска: Строка,
Аргументы: ЧитаемыйМассив<Объект>,
СоединитьПотокиОшибокИВывода: Булево = Истина)
Создает процесс с указанной командой запуска КомандаЗапуска
, аргументами Аргументы
и признаком объединения потоков вывода и ошибок СоединитьПотокиОшибокИВывода
. Созданный процесс не запускается.
Свойства
ПотокиОшибокИВыводаСоединены
ТолькоЧтение ПотокиОшибокИВыводаСоединены: Булево |
Определяет, соединены ли потоки ошибок и вывода:
-
Истина
- ошибки пишутся в поток вывода. -
Ложь
- ошибки пишутся в поток ошибок.
Методы
Живой
Живой(): Булево
Проверяет, жив ли запущенный процесс.
Запустить
Запустить(Каталог: Строка? = Неопределено)
Запускает созданный процесс или конвейер процессов. Каталог
- рабочий каталог запускаемого и дочерних процессов.
ОжидатьЗавершения
ОжидатьЗавершения(Длительность: Длительность): Булево
Ожидает завершения выполнения одного из условий:
- внешний процесс завершился,
- прошло заданное количество секунд
Длительность
(если задано).
Возвращает Ложь
, если внешний процесс не завершился за указанное время Длительность
.
Остановить
Остановить()
Останавливает созданный процесс.
ПередатьВыводВ
ПередатьВыводВ(
КомандаЗапуска: Строка,
Аргументы: ЧитаемыйМассив<Объект>
): ПроцессОс
Добавляет новый процесс на основе команды КомандаЗапуска
и аргументов Аргументы
в конвейер (pipe). К процессу в конвейере будут применены те же настройки, что и к исходному ПроцессОс. Возвращает текущий экземпляр ПроцессОс, в котором выходной поток соответствует выходному потоку нового процесса.
Примеры
метод ПросмотретьПапкуИНайтиПодстроку(ПапкаДляПросмотра: Строка, Фильтр: Строка)
пер Процесс = новый ПроцессОс("cmd.exe", ["/c", "dir %ПапкаДляПросмотра"])
// Передадим вывод в команду поиска подстроки
Процесс.ПередатьВыводВ("cmd.exe", ["/c", "findstr " + Фильтр])
// Запустим конвейер
Процесс.Запустить()
;
ПолучитьPid
ПолучитьPid(): Число?
Возвращает идентификатор процесса в операционной системе, либо Неопределено
, если получение PID’а невозможно.
ПолучитьКодВозврата
ПолучитьКодВозврата(): Число?
Возвращает код возврата от внешнего процесса. Код 0
считается нормальным завершением внешнего процесса.
ПолучитьПотокВвода
ПолучитьПотокВвода(): ПотокЗаписи
Чтобы процесс перестал ожидать входные данные, закройте полученный поток ввода.
Возвращает ПотокЗаписи для передачи входных данных в ПроцессОс.
Примеры
метод Grep(Вход: Строка, Фильтр: Строка): Строка
// Аналог команды grep в Windows. Требует входных данных
пер Процесс = новый ПроцессОс(cmd.exe", ["/c", "findstr %Фильтр"])
// Указать входные данные можно только после старта процесса
Процесс.Запустить()
пер Поток = Процесс.ПолучитьПотокВвода()
Поток.Записать(Вход)
// Даем понять, что входных данных процесс может больше не ожидать.
Поток.Закрыть()
возврат Процесс.ПолучитьПотокВывода().ПрочитатьКакТекст()
;
ПолучитьПотокВывода
ПолучитьПотокВывода(): ПотокЧтения
- Для передачи вывода одного процесса в другой используйте возможности конвейера (см. ПередатьВыводВ()).
- Не требует закрытия.
Возвращает выходной поток из внешнего процесса. Используется для получения результата от процесса. В поток по умолчанию также пишутся ошибки, произошедшие во время работы процесса.
ПолучитьПотокОшибок
ПолучитьПотокОшибок(): ПотокЧтения
Не требует закрытия.
Возвращает поток ошибок процесса. Если потоки ошибок и вывода соединены, будет возвращен пустой поток.