igoryonya has asked for the wisdom of the Perl Monks concerning the following question:
I tryed to understand the code, but not really. It works though, when I do:my $rin = ""; vec($rin, fileno(STDIN), 1) = 1; my $isPiped = select($rout=$rin,"","",1); if($isPiped){ #Do the data processing from pipe }
But, aftera a while, I stumbled on a problem, that on certain cases, it doesn't detect that there is an input, coming from pipe. Maybe, when the system was buisy and the data from pipe was taking a while to come, so, after trials and errors, I came up with the solution:some-program|myprogram -parameters
And it works every time, but now it waits for at least a 10 seconds every time. It becomes pretty annoying, after a while. Is there a better, more efficient solution to data coming through a pipe detection?my $rin = ""; sleep(5); vec($rin, fileno(STDIN), 1) = 1; sleep(5); my $isPiped = select($rout=$rin,"","",1); if($isPiped){ #Do the data processing from pipe }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Detect piped input
by Loops (Curate) on Nov 24, 2014 at 00:38 UTC |