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