Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^3: fork - alarm - output

by ikegami (Patriarch)
on Jun 08, 2010 at 15:51 UTC ( [id://843690]=note: print w/replies, xml ) Need Help??


in reply to Re^2: fork - alarm - output
in thread fork - alarm - output

where did you assigned value to $pid ? :-)

oops! open returns it. I'll fix it.

You can also miss some data, for example @cmd can handle TERM signal and print partial result.

Change the die into a warn if you want to handle partial results.

Actually, you're the one who misses data. <> is a buffered read, so you'll lose whatever's in the buffer if a timeout occurs. Or maybe it's recoverable by doing another read after the timeout occurs?

@cmd also can block/not handle TERM signal (or in some case, cannot be KILLed).

The killing mechanism can be expanded to add a kill KILL => $pid; if the process doesn't end after a certain time. That's easy, and it's outside of what the OP was asking about.

Replies are listed 'Best First'.
Re^4: fork - alarm - output
by happy.barney (Friar) on Jun 10, 2010 at 06:56 UTC
    AFAIK buffered read didn't lost data. My sample didn't use die to break main loop, instead of that i rely on pipe close.

    One critical part is close $pipe in parent's signal handler, it segfaults in perl 5.10.1

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (3)
As of 2024-04-24 18:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found