Класс Popen и работа с ним
Класс Popen и работа с ним
Popen - процесс, позволяющий iRidium Server выполнить команду в командной строке Windows и Linux. Popen не работает в приложении-клиенте i3 pro. Выполнение Popen открывает файловый указатель процесса и позволяет передать информацию о работе команды в указанный экземпляр функции - слушателя. Для того, чтобы выполнять несколько команд и различать информацию о их работе, мы создаем экземпляры Popen.Синтаксис
var cmd_process = new Popen (command, function);
Входные параметры:
- command
Например: 'ping 192.168.0.1'
type: string
команда для выполнения в командной строке (cmd.exe) - function
Например: cmd_result
type: function
экземпляр функции-слушателя, куда будут возвращены результаты выполнения команды
Выходные параметры:
- line
Метод: .onRecieve
type: string
данные, которые генерирует команда в процессе выполнения. Событие .OnReceive срабатывает в контексте Popen и получает строку line как входной параметр. Строку можно вывести в лог или записать в переменную iRidium Server - result
Метод: .onEnd
type: number
код, который генерирует команда при завершении. Событие .onEnd срабатывает в контексте Popen и получает result как входной параметр. Код можно вывести в лог или записать в переменную iRidium Server:- 0 - команда успешно завершена
- 259 и др. числа - ошибка. Код ошибки будет генерироваться при выполнении метода .Stop() - досрочном завершении команды, и в случае негативного результата (например, когда IP адрес недоступен для команды ping)
- .Stop()
Метод: .Stop()
type: method
команда принудительной остановки процесса Popen. Процесс не нужно завершать, если сработало событие .onEnd, но обязательно нужно завершить, если команда сама по себе не прерывается (как, например, бесконечный пинг)
Пример
function Listener (cmd){ this.onRecieve = function(line) { IR.Log(line); } this.onEnd = function(result) { IR.Log('Command: '+ cmd + " Result: " + result); } } function stop() { cmd_process.Stop(); } var cmd_result = new Listener ('ping 192.168.0.1'); var cmd_process = new Popen ('ping 192.168.0.1', cmd_result);
Чтобы завершить процесс, используйте метод .Stop(). Команды, которые не завершаются сами, нужно останавливать принудительно, т.к. каждая из низ использует ресурсы ОС и влияет на быстродействие
Popen работает только в iRidium Server на Windows и Linux. Не работает в i3 pro
Customer support service by UserEcho