Flushing and multiple pipes
- From: neurino <lelli.luca@xxxxxxxxxxxxxx>
- Date: Fri, 20 Jul 2012 14:44:03 +0200
Dear group,
happy to post my first message here! So, now the business.
I define two pipes which print both two parsed datastreams on the _same_ postscript file. The data values are selected through 'commands' by certain criteria in the following manner:
# shortened pseudocode
#!/usr/bin/perl
my $pipe1 = " commands >> $psfile";
my $pipe2 = " commands >> $psfile";
open(H1 ,"| $pipe1") or die "\n --- Error: Could not plot $pipe1: $!\n";
open(H2 ,"| $pipe2") or die "\n --- Error: Could not plot $pipe2: $!\n";
foreach my $ifile (@ifiles){
open(IFILE, "<$ifile");
while(<IFILE>){
$line = split(/\s+/,$_);
print H1 $line;
print H2 $line;
}
close(IFILE);
}
close(H1);
close(H2);
# end shortened pseudocode
I noticed that, depending on the datastream type, sometimes the postscript is written and closed correctly, sometimes it does not. I noticed also that on Ubuntu the script behaves differently than on Leopard OSX. No fancy modules are loaded, just pure Perl. The 'commands' are a pipe of awk and gmt routines.
To be on the safe side, i duplicated the foreach loop, and now i open one pipe at a time, guessing that the problem is how the OS flushes the pipes' buffers and how the postscript file gets the values.
It ain't by any means the best solution, because i have to parse the same files twice. Then the question: is there a way to open concurrent pipes in a robust way?
Thanks.
.
- Follow-Ups:
- Re: Flushing and multiple pipes
- From: Rainer Weikusat
- Re: Flushing and multiple pipes
- Prev by Date: Re: Help needed to finding how many users are in a group..
- Next by Date: Re: Flushing and multiple pipes
- Previous by thread: Help needed to finding how many users are in a group..
- Next by thread: Re: Flushing and multiple pipes
- Index(es):