#!/usr/bin/perl use Process; $| = 1; print STDERR "Started ..!\n"; Process::createProcess('./printApplication'); print STDERR ".. Finished!\n"; #### #!/usr/bin/perl print STDERR " printing some text\n"; print STDERR " printing some text\n"; print STDERR " printing some text\n"; print STDERR " printing some text\n"; sleep 10; #### package Process; use strict; use warnings; use IO::Select; use IPC::Open3; sub createProcess ($) { my($path) = @_; my($selector, $pid, @ready, $fh, $line); $pid = open3(*CMD_IN, *CMD_OUT, *CMD_ERR, $path); $selector = IO::Select->new(); $selector->add(*CMD_ERR, *CMD_OUT); while(@ready = $selector->can_read()) { foreach $fh (@ready) { if(fileno($fh) == fileno(CMD_ERR)) { $line = scalar ; if(defined $line) { print STDERR $line; } } else { $line = scalar ; if(defined $line) { print STDOUT $line; } } $selector->remove($fh) if eof($fh); } } waitpid($pid, 0); }