Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: multiple processes

by fokat (Deacon)
on Oct 24, 2001 at 22:53 UTC ( #121223=note: print w/replies, xml ) Need Help??


in reply to multiple processes

This might very well be a race condition. If the reader process tries to read() from the pipe before a writer opens it, the read() will fail with an EOF condition.

To avoid this scenario, open two filedescriptors in the parent, before the fork(). After the fork() close the appropiate end of the pipe. This code will probably do what you want:

#!/usr/bin/perl -w use strict; # Lots of nice code here... open RFIFO, "< $ENV{HOME}/.fifopipe" or die "Cannot open read pipe: $!\n"; open WFIFO, "> $ENV{HOME}/.fifopipe" or die "Cannot open write pipe: $!\n"; if (fork()) { # Parent close WFIFO; # Your parent code, which can now safely block on # <RFIFO> } else { # Child close RFIFO; # Your child code, which can take its time to write() # to the pipe. exit 0; }
Hope this helps.

Replies are listed 'Best First'.
Re: Re: multiple processes
by Mirage (Sexton) on Oct 25, 2001 at 13:59 UTC
    Well yeah, if this would be the reason, i could also use real pipes, i tried to use fifo because its possible to send in both directions with them, so well i tried to just send directly from the child immediatly after connecting and voila the server prints it out, but just once.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (3)
As of 2022-11-28 04:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?