Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Win32 capturing output from a process that may hang

by ZlR (Chaplain)
on Mar 02, 2005 at 11:48 UTC ( [id://435781]=note: print w/replies, xml ) Need Help??


in reply to Win32 capturing output from a process that may hang

Hello,

Win32::Job available with the default 5.8 activestate distribution will allow you to redirect the STDERR, STDOUT, and STDIN of the spawned process to any arbitrary file handle.

hope this helps,
zlr

updated with working code : Re^5: Win32 capturing output from a process that may hang

  • Comment on Re: Win32 capturing output from a process that may hang

Replies are listed 'Best First'.
Re^2: Win32 capturing output from a process that may hang
by Random_Walk (Prior) on Mar 02, 2005 at 16:07 UTC

    This looks really nice but I can not get it to work :(

    C:\system\Perl\bin>perl print.pl one two This is my @ARGV one, two >perl -MWin32::Job -le"$job=Win32::Job->new;$job->spawn('perl', 'perl +print.pl one two', {stdout=> 'test.out'}); print "ran OK" if $job->ru +n(5);" >type test.out >dir test.out Volume in drive C is CDRIVE Volume Serial Number is 144D-4181 Directory of C:\system\Perl\bin 02/03/2005 16:13 0 test.out 1 File(s) 0 bytes 0 Dir(s) 2,907,258,880 bytes free C:\system\Perl\bin>time The current time is: 16:13:31.15 Enter the new time:
    It is also not printing "Ran OK" even though it is returning the prompt imediately so not hitting the 5 second timeout. Did I miss something obvious ? (I also tried giving it stdout => 'test.out' which the doco says should also work, same thing, zero byte file)

    Cheers,
    R.

    Pereant, qui ante nos nostra dixerunt!
      I will have to check later on a 5.8 install .
      At first i'd say it doesn't print "ran OK" because the run method applies the timeout only if something went wrong which is not the case here . From the docs of run:

      Returns a boolean indicating whether the processes exited by themselves, or whether the time expired.

      later,
      zlr

        Also from the docs for run($timeout, $which);...

        A true return value means the processes exited normally; a false value means one or more processes was killed with $timeout

        so that is not the prob unless the docs have got it base over apex

        Cheers,
        R.

        Pereant, qui ante nos nostra dixerunt!

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://435781]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (5)
As of 2024-04-20 00:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found