G'day italdesign,
This technique may be suitable for your needs.
- Parent:
-
-
Waits (up to a specified timeout period) for the child to create a (uniquely) named pipe.
-
Writes an unordered list of records to the named pipe.
-
Waits for the child to exit.
-
Deletes the named pipe.
- Child:
-
-
Opens an anonymous pipe to sort.
-
Creates a (uniquely) named pipe.
-
Reads all records from the named pipe and writes them to the anonymous (sort) pipe.
#!/usr/bin/env perl
use strict;
use warnings;
use autodie;
use POSIX qw{mkfifo};
use Time::HiRes qw{usleep};
my $named_pipe = "pm_1085515_$$.fifo";
unlink $named_pipe if -e $named_pipe;
if (fork) {
my $timeout = 2;
local $SIG{ALRM} = sub { die "Timed out after $timeout seconds" };
alarm $timeout;
usleep 1e3 until -p $named_pipe;
alarm 0;
open my $writer, '>', $named_pipe;
print $writer "$_\n" for qw{B D C A};
close $writer;
wait;
unlink $named_pipe;
}
else {
open my $sorter, '|-', 'sort';
mkfifo $named_pipe, 0600;
open my $reader, '<', $named_pipe;
print $sorter $_ while <$reader>;
close $reader;
close $sorter;
}
Input:
B
D
C
A
Output:
A
B
C
D
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.