in reply to Re^2: Check for a new line
in thread Check for a new line
You control the timeout activity with the coderef you assign to $SIG{ALRM}. There's no requirement to kill or die.
In the test shell script, I increased the delay (to get a few periods of no output) and added a loop (to emulate the stop/start behaviour):
#!/bin/sh for i in {1..3}; do echo With newline echo With newline echo "NO newline\c" sleep 10 echo With newline done
In the Perl script, I just changed
local $SIG{ALRM} = sub { kill HUP => $pid; die "No data\n" };
to
local $SIG{ALRM} = sub { alarm 0; print "No data\n"; alarm $timeout };
Here's the new output:
With newline With newline No data No data No data NO newlineWith newline With newline With newline No data No data No data NO newlineWith newline With newline With newline No data No data No data NO newlineWith newline
Perhaps take a look at perlipc: Signals. This has more information on Signals in general; it also has another $SIG{ALRM} example.
-- Ken
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Check for a new line
by h123 (Novice) on Jan 29, 2014 at 09:39 UTC |