Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

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.


Comment on Re^3: select($rin,undef,undef,undef) only blocking once
Select or Download Code
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.

    select($rin,undef,undef,$timeout)
    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?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (11)
As of 2014-09-02 10:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite cookbook is:










    Results (21 votes), past polls