Класс 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



Эта статья была полезна для 2 людей. Эта статья помогла вам?

Сервис поддержки клиентов работает на платформе UserEcho