Wx::Perl::ProcessStream

Access IO of external processes via events
Download

Wx::Perl::ProcessStream Ranking & Summary

Advertisement

  • Rating:
  • License:
  • Perl Artistic License
  • Price:
  • FREE
  • Publisher Name:
  • Mark Dootson
  • Publisher web site:
  • http://search.cpan.org/~mdootson/

Wx::Perl::ProcessStream Tags


Wx::Perl::ProcessStream Description

Wx::Perl::ProcessStream is a Perl module that provides the STDOUT, STDERR and exit codes of asynchronously running processes via events. It may be used for long running or blocking processes that provide periodic updates on state via STDOUT. Simple IPC is possible via STDIN.Do not use this module simply to collect the output of another process. For that, it is much simpler to do: my ($status, $output) = Wx::ExecuteStdout( 'perl -e"print qq($_\n) for(@INC);"' );SYNOPSYS use Wx::Perl::ProcessStream qw( :everything ); EVT_WXP_PROCESS_STREAM_STDOUT ( $self, \&evt_process_stdout ); EVT_WXP_PROCESS_STREAM_STDERR ( $self, \&evt_process_stderr ); EVT_WXP_PROCESS_STREAM_EXIT ( $self, \&evt_process_exit ); EVT_WXP_PROCESS_STREAM_MAXLINES ( $self, \&evt_process_maxlines ); my $proc1 = Wx::Perl::ProcessStream::Process->new('perl -e"print qq($_\n) for(@INC);"', 'MyName1', $self); $proc1->Run; my $command = 'executable.exe parm1 parm2 parm3' my $proc2 = Wx::Perl::ProcessStream::Process->new($command, 'MyName2', $self) ->Run; my @args = qw( executable.exe parm1 parm2 parm3 ); my $proc3 = Wx::Perl::ProcessStream::Process->new(\@args, 'MyName2', $self); $proc3->Run; my $proc4 = Wx::Perl::ProcessStream::Process->new(\@args, 'MyName2', $self, 'readline')->Run; my $proc5 = Wx::Perl::ProcessStream::Process->new(\@args, 'MyName2', $self); sub evt_process_stdout { my ($self, $event) = @_; $event->Skip(1); my $process = $event->GetProcess; my $line = $event->GetLine; if($line eq 'something we are waiting for') { $process->WriteProcess('a message to stdin'); $process->CloseInput() if($finishedwriting); } ............ # To Clear Buffer my @buffers = @{ $process->GetStdOutBuffer }; } sub evt_process_stderr { my ($self, $event) = @_; $event->Skip(1); my $process = $event->GetProcess; my $line = $event->GetLine; print STDERR qq($line\n); # To Clear Buffer my @errors = @{ $process->GetStdErrBuffer }; } sub evt_process_exit { my ($self, $event) = @_; $event->Skip(1); my $process = $event->GetProcess; my $line = $event->GetLine; my @buffers = @{ $process->GetStdOutBuffer }; my @errors = @{ $process->GetStdErrBuffer }; my $exitcode = $process->GetExitCode; ............ $process->Destroy; } sub evt_process_maxlines { my ($self, $event) = @_; my $process = $event->GetProcess; ..... bad process $process->Kill; }Product's homepage


Wx::Perl::ProcessStream Related Software