On Friday 31 Jan 2003 8:56 am, Angerstein wrote:
> Hello there!
> Sorry, if you get this mail two time.
>
> I have a question regarding named pipes (mknod mypipe p).
>
> I have 2 programmes, one is not opensource nor programmed by me.
> The 2. programm is programmed by me.
>
> The 1. writes into a pipe.
> The 2. should read from the pipe.
>
> So far so good.
>
> The problem is if the first programm can�t write to the pipe it dies.
> So it dies when the pipe is a) full (size can�t be increased) or b)
> blocked.
>
> With the newer Perl-Versions 5.6 and higher there is IO::Handle with
> getline.
> Which should theoretically work, but I don�t know if and how.
>
> With the old perl verion 5.00.5, i�m damed to use, there is no such modul,
> and I have no idea, after testing so much stuff, how it could work.
>
> If anyone has a good idea or some code I would be very happy.
>
>
> Thanks!
>
> Bastian
Here's a couple of test scripts I wrote before creating a daemon that sat
around waiting for instructions from a number of clients. It has a timeout
on the read so it can perform other functions . These both worked with Perl
5.005_02 on an AIX box.
$ more rwlprd # writer
#!/usr/bin/perl -w
select(STDERR); $|=1;
select(STDOUT); $|=1;
chdir $ENV{RWDDATA} || die "cannot cd: $!\n";
die "pipe is missing\n" unless ( -p "rwfifo");
eval {
local $SIG{ALRM} = sub {die "alarm clock restart" };
alarm 10;
open(FOUT,">rwfifo") || die "$!";
print FOUT "NPNN ICL00000.LP\n";
close(FOUT);
alarm 0;
};
if ( $@=~/alarm clock restart/) {
print "write to pipe failed, processing alternative\n";
} else {
print "write to pipe worked, I'm outa here\n";
}
$ cat rwlprp # reader
#!/usr/bin/perl -w
select(STDERR); $|=1;
select(STDOUT); $|=1;
my $inp;
chdir $ENV{RWDDATA} || die "cannot cd: $!\n";
die "pipe is missing\n" unless ( -p "rwfifo");
eval {
local $SIG{ALRM} = sub {die "alarm clock restart" };
alarm 20;
open(FOUT,"rwfifo") || die "$!";
$inp=<FOUT>;
close(FOUT);
alarm 0;
};
if ( $@=~/alarm clock restart/) {
print "read from pipe failed\n";
} else {
print "read from pipe worked, I've got '$inp'\n";
}
$
--
Gary Stainburn
This email does not contain private or confidential material as it
may be snooped on by interested government parties for unknown
and undisclosed purposes - Regulation of Investigatory Powers Act, 2000
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]