#!/usr/bin/perl
use strict;
use warnings;
use POSIX ':fcntl_h';
use IPC::Run 'run';
my $fifo = "test_fifo";
unless ( -p $fifo ) {
system("mkfifo", $fifo) == 0 or die "Unable to create FIFO: $!";
}
# FIFOs need readers before writers.
sysopen FIFO_OUT, $fifo, O_RDONLY | O_NONBLOCK or die "Unable to ope
+n FIFO for read: $!";
sysopen FIFO_IN, $fifo, O_WRONLY | O_NONBLOCK or die "Unable to ope
+n FIFO for write: $!";
run ( ["cat", "pipe.pl"], ">", \*FIFO_IN, "<", \*FIFO_OUT );
while (<FIFO_OUT>) {
chomp;
print "Foo: ", $_, ": Bar.\n";
}
close FIFO_IN or die "Problems closing FIFO writer: $!";
close FIFO_OUT or die "Problems closing FIFO reader: $!";
|