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

Re^3: select($rin,undef,undef,undef) only blocking once

by Tanalis (Curate)
on Jul 26, 2005 at 12:09 UTC ( #478151=note: print w/replies, xml ) Need Help??

in reply to Re^2: select($rin,undef,undef,undef) only blocking once
in thread select($rin,undef,undef,undef) only blocking once

It'd seem to be.

I still favour a blocking read over blocking using select, though - you're using two system calls (which are relatively expensive) to do the job of one (unless there's something I'm missing).

Paraphrasing the Cookbook a little, replacing your loop with

for( ;; ) { open FIFO; "<", $fifofile or die $!; my $buf = <FIFO>; # blocks next unless defined $buf; chomp $buf; print $buf; close FIFO; }
would seem to work as expected.

Just as a final point, I'm not 100% sure what you're trying to achieve with your calls to index and substr - all you seem to be doing there is stripping the newline, which you can achieve using chomp.

Hope that helps.

Replies are listed 'Best First'.
Re^4: select($rin,undef,undef,undef) only blocking once
by rabbit7 (Initiate) on Jul 26, 2005 at 13:43 UTC
    the code i posted is just an example to demonstrate my problem with fifos. i am using select() because sometimes i want to return from waiting for input.

    i am not using $buf = <FH> because i thought your not supposed to use it when you use select()
      You shouldn't use select with buffered reads, no - in that case, I'd stick with your solution, especially if you want to use explicit read timeouts.

      My code was an example showing how you could avoid the use of select, if your circumstances permitted it - which it seems they don't :)

        Hmm still would be cool if i dont have to reopen the FIFO everytime the loop gets executed. If anyone has a hint how to do that im glad to listen and try ;)

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (4)
As of 2022-08-09 01:23 GMT
Find Nodes?
    Voting Booth?

    No recent polls found