Skip to content

Latest commit

 

History

History
59 lines (47 loc) · 3.36 KB

ProcessControl.md

File metadata and controls

59 lines (47 loc) · 3.36 KB

ProcessControl - внешняя компонента для запуска приложений

Предназначена для Windows и Linux. Разработана по технологии Native API в составе библиотеки VanessaExt.

На Linux реализованы Создать, Ждать, Прервать, ИдентификаторПроцесса, КодВозврата, Активный и ВвестиДанные. Команда запускается через /bin/sh -c, поэтому поддерживаются пайпы и перенаправления; m_pid — это PID оболочки (для простой команды оболочка может заменить себя командой). Процесс создаётся в собственной группе; Прервать отправляет SIGKILL группе процессов, то есть завершает и дочерние процессы. Прервать ждёт фактического завершения лидера (до 1 секунды) и только потом возвращает Истина; повторный Создать после убитого процесса работает. Ждать опрашивает состояние дочернего процесса и не конкурирует с reaper-потоком WindowsControl. Повторный Создать при ещё активном процессе возвращает Ложь.

КодВозврата равен 259, пока процесс активен. Если процесс уже был собран другим кодом и настоящий код возврата неизвестен, возвращается -1. Параметр ОтображатьОкноКонвертора на Linux игнорируется.

Подключение внешней компоненты

&НаКлиенте
Перем БуферОбмена;

&НаКлиенте
Процедура ПодключениеВнешнейКомпонентыЗавершение(Подключение, ДополнительныеПараметры) Экспорт
	БуферОбмена = Новый("AddIn." + ИдентификаторКомпоненты + ".ProcessControl");
КонецПроцедуры	

Свойства

  • ИдентификаторПроцесса / ProcessId
  • Активный / IsActive
  • КодВозврата / ExitCode

Методы

  • Создать / Create
  • Ждать / Wait
  • Прервать / Terminate
  • ВвестиДанные / InputData
&НаКлиенте
Перем ИдентификаторКомпоненты, ПроцессЗаписи;

&НаКлиенте
Процедура НачатьЗапись(Команда)
	КоманднаяСтрока = "ffmpeg -f gdigrab -framerate 30 -i desktop output.mp4";
	ПроцессЗаписи = Новый("AddIn." + ИдентификаторКомпоненты + ".ProcessControl");
	ПроцессЗаписи.Создать(КоманднаяСтрока, ОтображатьОкноКонвертора);
КонецПроцедуры

&НаКлиенте
Процедура ОстановитьЗапись(Команда)
	ПроцессЗаписи.ВвестиДанные("q");
КонецПроцедуры