Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Serge Olkhowik                       2:464/227.2    02 Jun 2003  13:02:15
 To : All
 Subject : IO::Select на open3/Win32
 -------------------------------------------------------------------------------- 
 
 
 У кого-то субж работает?
 
 Под Win32 платформой мне нужно запустить суб-процесс (ещё один скрипт) и
 отлавливать его STDOUT и STDERR раздельно. Я нашёл пример гуглом и делаю
 таким способом:
 
   local *RUN;
   local *NUL;
   local *ERR = tempfile;
   my $pid = open3(\*NUL, \*RUN, ">&ERR", $run);
   while (<RUN>) {
     s/[\n\r]//g;
     gol '>> ' . $_ . "\n";
   }
   close(NUL);
   close(RUN);
   waitpid $pid, 0;
   seek ERR, 0, 0;
   while (<ERR>) {
     s/[\n\r]//g;
     warn "** run: $_\n"
   }
   close(ERR);
 
 Hо хотелось бы отлавливать одновременно и ошибки, попробовал IO::Select:
 
   local *RUN;
   local *NUL;
   local *ERR;
   my $pid = open3(\*NUL, \*RUN, \*ERR, $run);
   my $sel = new IO::Select \*RUN, \*ERR;
   $sel->add(*RUN, *ERR);
   while (my @ready = $sel->can_read) {
     foreach my $fh (@ready) {
 #      if ($fh == \*RUN) {
       if (fileno($fh) == fileno(RUN)) {
   gol "some info from RUN\n";
   ($_ = <RUN>) =~ s/[\n\r]//g;
   gol '>> ' . $_ . "\n";
 #      } elsif ($fh == \*ERR) {
       } elsif (fileno($fh) == fileno(ERR)) {
   gol "some info from ERR\n";
   ($_ = <RUN>) =~ s/[\n\r]//g;
   gol '** run: ' . $_ . "\n";
       } else {
   warn "Unknown handle!\n";
       }
     }
   }
   close(NUL);
   close(RUN);
   close(ERR);
   waitpid $pid, 0;
 
 Hо в таком коде происходит нечто странное - суб-процесс запускается, но до
 can_read даже не доходит :(
 
 Кто-то что-то знает по этому поводу?
 
 Спасибо!
 
 -- 
 Serge Olkhowik (aka BaMba)
 hi@bamba.dp.ua http://www.bamba.dp.ua 2:464/227@fidonet ICQ:322855162
 --- Gnus/5.09 (Gnus v5.9.0) Emacs/21.3
  * Origin: private news server (2:464/227.2@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 IO::Select на open3/Win32   Serge Olkhowik   02 Jun 2003 13:02:15 
Архивное /ru.perl/14694e87d98f2.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional