Page 331 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 331

подробная информация по этой теме приведена в официалыюй доку­
                                                                e
                                           s
                  ментации  (https : / /nodej  .   o r g / a p i / c hild_proc s s . html#child _
                  proce s  _ child _process  fork_ modulepath _args _ options).
                       s
          Поскольку функция ехес является наиболее общей и наименее требовательной,
       в этой главе мы будем использовать ее.
          В  демонстрационных  целях  мы  выполним  команду dir, которая отображает
       список содержимого каталога (хотя пользователям Unix более знакома команда l s ,
       в большинстве систем Unix она равнозначна команде dir).
       const  ехес  =  require ( ' child_process  ' )  . е хес;

              i
       exec ( ' d r ' ,  function ( e rr,  s t dout,  stderr)  {
           if ( e rr)  return  console . error (  ' Oшибкa  при  запуске  "dir" ' ) ;
           stdout  =  stdout . t oString ( ) ;  / /  преобразует  Buffer  в  строку
                           t
           console . l og ( stdou ) ;
           stderr  =  stderr . toString ( ) ;
           if ( s t derr  ! = =  '  '  )  {
               console . e rror ( ' Oшибкa : ' ) ;
                                 r
               console . error ( s tder ) ;
       } )   ;
          Поскольку функция  ехес запускает системную оболочку, мы не должны указы­
       вать путь к каталогу, где хранится выполняемый файл. Чтобы вызвать определенную
       программу,  которая обычно недоступна из оболочки вашей  системы, необходимо
       указать полный путь к ее исполняемому файлу.
          Функции обратного вызова метода ехес помимо признака ошибки передается два
                                       s
       объекта типа Buffer - один для  t dout (стандартный поток вывода программы)
       и другой для s t derr (стандартный поток вывода ошибок, если они есть). В этом при­
                                                                     e
       мере, поскольку мы не предусматриваем вывод на устройство std r r, мы сначала
       проверяем значение первого аргумента на предмет возникновения ошибки в процес­
       се запуска программы, а затем выводим полученные результаты на консоль.
          Функции ехес можно передать опциональный объект options, который позво­
       ляет задать рабочий каталог, переменные окружения и т.д. Более подробная инфор­
       мация по этой теме приведена в официальной документации (https :  / nod j s .   org/
                                                                      /
                                                                           e
       api/ child _process . html).
                   Обратите внимание на способ, которым мы импортируем функцию
                                                                          s
                  ехес. Вместо того чтобы импортировать модуль child _proce s ,   ис­
                                                         '
                                                                     s
                  пользуя const  child _process  =  req i r e (  c h i l d _proce s ' ) , а затем
                                                    u
                                                     s
                  вызывать метод  ехес как child_proce s .   ехес, мы непосредственно
                  используем псевдоним ехес. Вы можете пользоваться любым вариан­
                  том, но тот способ, которым мы это сделали, весьма распространен.
       334      Глава 20. Платформа Node
   326   327   328   329   330   331   332   333   334   335   336