Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re: use sysread to read non-blocking filehandle

by RichardK (Parson)
on Nov 04, 2014 at 13:03 UTC ( #1106024=note: print w/replies, xml ) Need Help??

in reply to use sysread to read non-blocking filehandle

Two calls to last doesn't look right. Maybe one of these should be a next?

if ($! == EAGAIN()) { print "\nEAGAIN is set\n"; last; } else { last; }

Replies are listed 'Best First'.
Re^2: use sysread to read non-blocking filehandle
by x12345 (Novice) on Nov 04, 2014 at 13:45 UTC
    If there are severals filehandles parallel at the same time, I can do a loop and next to read the filehandels. Here I just use a simple example to try non-blocking and sysread. So just one filehandle, set to non blocking, then read.
      If I just use once sysread to try, it is still empty. Here is the code, what is wrong in the code?
      my $cmd = '/opt/rssh/bin/ssh'; my $machine = "remote_machine"; open(my $fh, "-|", "$cmd $machine \"hostname;sleep 5;uptime\" 2>&1") o +r die "cannot open fh"; my $flags = fcntl($fh, F_GETFL, 0) or die "\ncan't get flags for the p +ipe: $!\n"; fcntl($fh, F_SETFL, $flags | O_NONBLOCK) or die "\ncan't set flags: $! +\n"; my $out = $fh; my $bytes_read = -1; my $blocksize = 1024; my $result = ""; my $buf; $bytes_read = sysread($out, $buf, $blocksize); print "\nl buf content is:\n $buf \n"; close $out;

        Maybe you want to learn what "nonblocking" really means?

        In short, "nonblocking" means that the sysread call will return immediately and tell you how many bytes were read at this time. If your filehandle has nothing to read, it will not block. Blocking means "wait until data is avilable".

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (3)
As of 2021-09-18 19:46 GMT
Find Nodes?
    Voting Booth?

    No recent polls found