Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^2: Windows run an exe print its output and cut it off after a time

by BrowserUk (Pope)
on Oct 12, 2012 at 16:18 UTC ( #998741=note: print w/replies, xml ) Need Help??


in reply to Re: Windows run an exe print its output and cut it off after a time
in thread Windows run an exe print its output and cut it off after a time

"Emulated" or not, alarm works fine on Windows. As do both forms of piped open:

C:\test>perl -E"alarm 5; say(),sleep(1) for 1 .. 10" 1 2 3 4 5 Terminating on signal SIGALRM(14) C:\test>perl -E"$p=open I, '-|', 'ver'; say <I>" Microsoft Windows [Version 6.0.6001] C:\test>perl -E"$p=open O, '|-', 'find \"1\"'; say O for 1 .. 10" 1 10

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

RIP Neil Armstrong

  • Comment on Re^2: Windows run an exe print its output and cut it off after a time
  • Download Code

Replies are listed 'Best First'.
Re^3: Windows run an exe print its output and cut it off after a time
by kcott (Canon) on Oct 12, 2012 at 17:29 UTC

    I thought alarm did work fine but the OP wrote "... alarm is not working in windows.". As I don't have a Windows Perl in front of me, I checked the doco. I wasn't trying to make any point by using the word emulated - that's just what the doco says: "alarm Emulated using timers ...".

    Scrolling down the perlport page a bit after reading about alarm, I came across the open entry by chance. It seems the doco is just wrong with respect to piped open. perlport says it's "unsupported"; perlfork says it's "not yet implemented".

    Thanks for the example code.

    -- Ken

      that's just what the doco says: "alarm Emulated using timers ...".

      In the sense that the OS has neither a native alarm API nor *nix-style signals, it is emulated.

      But then again, under modern versions of *nix including linux, the original form of alarm is also "emulated with timers", so not so different.

      perlport says it's "unsupported"; perlfork says it's "not yet implemented".

      A lot of those more obscure docs have never been updated to reflect the current state of play unfortunately.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

      RIP Neil Armstrong

Re^3: Windows run an exe print its output and cut it off after a time
by VinsWorldcom (Vicar) on Oct 12, 2012 at 17:01 UTC

    Well blow me down, BrowserUK is correct. I've never gotten alarm() to work reliably on Windows - perhaps because I'm not that versed in Signals and didn't know what I was doing or was trying on a system call without the eval/die as described in alarm; however, alarm() added in my original script works:

    use strict; use warnings; my $pid = open(my $fileHandler, '-|', "./test.exe" ); my $DONE = 0; $SIG{ALRM} = sub { $DONE = 1 }; alarm 2; while (<$fileHandler>) { print "$_\r"; # \r to not overrun output screen buffer last if ($DONE) } print "\nTimeout! - Time to kill pid: $pid\n"

    And the output

    VinsWorldcom@C:\Users\VinsWorldcom\tmp> TimeThis test.pl TimeThis : Command Line : test.pl TimeThis : Start Time : Fri Oct 12 13:01:09 2012 114601 Timeout! - Time to kill pid: 4700 TimeThis : Command Line : test.pl TimeThis : Start Time : Fri Oct 12 13:01:09 2012 TimeThis : End Time : Fri Oct 12 13:01:12 2012 TimeThis : Elapsed Time : 00:00:02.454

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (9)
As of 2016-08-31 07:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    The best thing I ever won in a lottery was:















    Results (427 votes). Check out past polls.