Link Search Menu Expand Document

ПроцессОс

Стд::СредаИсполнения::ПроцессОс
Базовые типы: Объект

Иерархия типа

graph BT;
ПроцессОс-->Объект;

Объект для работы с внешними процессами.

Сравнение ссылочное


Конструкторы

ПроцессОс

ПроцессОс(
  КомандаЗапуска: Строка,
  СоединитьПотокиОшибокИВывода: Булево = Истина)
Перегрузка:
ПроцессОс(КомандаЗапуска: Строка, Аргументы: ЧитаемыйМассив<Объект>, СоединитьПотокиОшибокИВывода: Булево = Истина)

Создает процесс с указанной командой запуска КомандаЗапуска и признаком объединения потоков вывода и ошибок СоединитьПотокиОшибокИВывода. Созданный процесс не запускается.


ПроцессОс

ПроцессОс(
  КомандаЗапуска: Строка,
  Аргументы: ЧитаемыйМассив<Объект>,
  СоединитьПотокиОшибокИВывода: Булево = Истина)
Перегрузка:
ПроцессОс(КомандаЗапуска: Строка, СоединитьПотокиОшибокИВывода: Булево = Истина)

Создает процесс с указанной командой запуска КомандаЗапуска, аргументами Аргументы и признаком объединения потоков вывода и ошибок СоединитьПотокиОшибокИВывода. Созданный процесс не запускается.


Свойства

ПотокиОшибокИВыводаСоединены

ТолькоЧтение ПотокиОшибокИВыводаСоединены: Булево

Определяет, соединены ли потоки ошибок и вывода:

  • Истина - ошибки пишутся в поток вывода.
  • Ложь - ошибки пишутся в поток ошибок.

Методы

Живой

Живой(): Булево

Проверяет, жив ли запущенный процесс.


Запустить

Запустить(Каталог: Строка? = Неопределено)

Запускает созданный процесс или конвейер процессов.

  • Каталог - рабочий каталог запускаемого и дочерних процессов.

ОжидатьЗавершения

ОжидатьЗавершения(Длительность: Длительность): Булево

Ожидает завершения выполнения одного из условий:

  • внешний процесс завершился,
  • прошло заданное количество секунд Длительность (если задано).

Возвращает Ложь, если внешний процесс не завершился за указанное время Длительность.


Остановить

Остановить()

Останавливает созданный процесс.


ПередатьВыводВ

ПередатьВыводВ(
  КомандаЗапуска: Строка,
  Аргументы: ЧитаемыйМассив<Объект>
): ПроцессОс

Добавляет новый процесс на основе команды КомандаЗапуска и аргументов Аргументы в конвейер (pipe). К процессу в конвейере будут применены те же настройки, что и к исходному ПроцессОс. Возвращает текущий экземпляр ПроцессОс, в котором выходной поток соответствует выходному потоку нового процесса.

Примеры

метод ПросмотретьПапкуИНайтиПодстроку(ПапкаДляПросмотра: Строка, Фильтр: Строка)
    пер Процесс = новый ПроцессОс("cmd.exe", ["/c", "dir %ПапкаДляПросмотра"])

    // Передадим вывод в команду поиска подстроки
    Процесс.ПередатьВыводВ("cmd.exe", ["/c", "findstr " + Фильтр])

    // Запустим конвейер
    Процесс.Запустить()
;

ПолучитьPid

ПолучитьPid(): Число?

Возвращает идентификатор процесса в операционной системе, либо Неопределено, если получение PID‘а невозможно.


ПолучитьКодВозврата

ПолучитьКодВозврата(): Число?

Возвращает код возврата от внешнего процесса. Код 0 считается нормальным завершением внешнего процесса.


ПолучитьПотокВвода

ПолучитьПотокВвода(): ПотокЗаписи

Чтобы процесс перестал ожидать входные данные, закройте полученный поток ввода.

Возвращает ПотокЗаписи для передачи входных данных в ПроцессОс.

Исключения

ИсключениеНедопустимоеСостояние - если метод вызван до запуска процесса.

Примеры

метод Grep(Вход: Строка, Фильтр: Строка): Строка
    // Аналог команды grep в Windows. Требует входных данных
    пер Процесс = новый ПроцессОс("cmd.exe", ["/c", "findstr %Фильтр"])

    // Указать входные данные можно только после старта процесса
    Процесс.Запустить()
    пер Поток = Процесс.ПолучитьПотокВвода()
    Поток.Записать(Вход)
    
    // Даем понять, что входных данных процесс может больше не ожидать.
    Поток.Закрыть()

    возврат Процесс.ПолучитьПотокВывода().ПрочитатьКакСтроку()
;

ПолучитьПотокВывода

ПолучитьПотокВывода(): ПотокЧтения
  • Для передачи вывода одного процесса в другой используйте возможности конвейера (см. ПередатьВыводВ()).
  • Не требует закрытия.

Возвращает выходной поток из внешнего процесса. Используется для получения результата от процесса. В поток по умолчанию также пишутся ошибки, произошедшие во время работы процесса.

Для получения данных всего потока вывода, нужно дождаться завершения выполнения процесса (метод ОжидатьЗавершения(...)).

Исключения

ИсключениеНедопустимоеСостояние - если метод вызван до запуска процесса.


ПолучитьПотокОшибок

ПолучитьПотокОшибок(): ПотокЧтения

Не требует закрытия.

Возвращает поток ошибок процесса. Если потоки ошибок и вывода соединены, будет возвращен пустой поток.

Для получения данных всего потока вывода, нужно дождаться завершения выполнения процесса (метод ОжидатьЗавершения(...)).

Исключения

ИсключениеНедопустимоеСостояние - если метод вызван до запуска процесса.


Список унаследованных методов

Объект