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