diff options
author | David Mitchell <davem@iabyn.com> | 2010-11-29 10:36:19 +0000 |
---|---|---|
committer | David Mitchell <davem@iabyn.com> | 2010-11-29 10:36:19 +0000 |
commit | 9eed50dc853be0183bf92923847963d81c3f8f51 (patch) | |
tree | 9a67bdb07aeef14df4824f4c5d09a789b1bfa65c /pod/perlipc.pod | |
parent | 75bc03b37d4cda9b1f2c599806c7d977157d9df5 (diff) | |
download | perl-9eed50dc853be0183bf92923847963d81c3f8f51.tar.gz |
in perlipc, 'named pipes' was in signals section
Move the '=head1 Named Pipes' section down so that it's no longer nested,
cuckoo-like, in the middle of the '=head1 Signals' section.
Diffstat (limited to 'pod/perlipc.pod')
-rw-r--r-- | pod/perlipc.pod | 108 |
1 files changed, 54 insertions, 54 deletions
diff --git a/pod/perlipc.pod b/pod/perlipc.pod index 5e9f408a62..6225d95d30 100644 --- a/pod/perlipc.pod +++ b/pod/perlipc.pod @@ -281,60 +281,6 @@ info to show that it works; it should be replaced with the real code. } -=head1 Named Pipes - -A named pipe (often referred to as a FIFO) is an old Unix IPC -mechanism for processes communicating on the same machine. It works -just like regular anonymous pipes, except that the -processes rendezvous using a filename and need not be related. - -To create a named pipe, use the C<POSIX::mkfifo()> function. - - use POSIX qw(mkfifo); - mkfifo($path, 0700) || die "mkfifo $path failed: $!"; - -You can also use the Unix command mknod(1), or on some -systems, mkfifo(1). These may not be in your normal path, though. - - # system return val is backwards, so && not || - # - $ENV{PATH} .= ":/etc:/usr/etc"; - if ( system("mknod", $path, "p") - && system("mkfifo", $path) ) - { - die "mk{nod,fifo} $path failed"; - } - - -A fifo is convenient when you want to connect a process to an unrelated -one. When you open a fifo, the program will block until there's something -on the other end. - -For example, let's say you'd like to have your F<.signature> file be a -named pipe that has a Perl program on the other end. Now every time any -program (like a mailer, news reader, finger program, etc.) tries to read -from that file, the reading program will read the new signature from your -program. We'll use the pipe-checking file-test operator, B<-p>, to find -out whether anyone (or anything) has accidentally removed our fifo. - - chdir(); # go home - my $FIFO = ".signature"; - - while (1) { - unless (-p $FIFO) { - unlink $FIFO; # discard any failure, will catch later - require POSIX; # delayed loading of heavy module - POSIX::mkfifo($FIFO, 0700) - || die "can't mkfifo $FIFO: $!"; - } - - # next line blocks till there's a reader - open (FIFO, "> $FIFO") || die "can't open $FIFO: $!"; - print FIFO "John Smith (smith\@host.org)\n", `fortune -s`; - close(FIFO) || die "can't close $FIFO: $!"; - sleep 2; # to avoid dup signals - } - =head2 Deferred Signals (Safe Signals) Before Perl 5.7.3, installing Perl code to deal with signals exposed you to @@ -473,6 +419,60 @@ If you want the old signal behavior back despite possible memory corruption, set the environment variable C<PERL_SIGNALS> to C<"unsafe">. This feature first appeared in Perl 5.8.1. +=head1 Named Pipes + +A named pipe (often referred to as a FIFO) is an old Unix IPC +mechanism for processes communicating on the same machine. It works +just like regular anonymous pipes, except that the +processes rendezvous using a filename and need not be related. + +To create a named pipe, use the C<POSIX::mkfifo()> function. + + use POSIX qw(mkfifo); + mkfifo($path, 0700) || die "mkfifo $path failed: $!"; + +You can also use the Unix command mknod(1), or on some +systems, mkfifo(1). These may not be in your normal path, though. + + # system return val is backwards, so && not || + # + $ENV{PATH} .= ":/etc:/usr/etc"; + if ( system("mknod", $path, "p") + && system("mkfifo", $path) ) + { + die "mk{nod,fifo} $path failed"; + } + + +A fifo is convenient when you want to connect a process to an unrelated +one. When you open a fifo, the program will block until there's something +on the other end. + +For example, let's say you'd like to have your F<.signature> file be a +named pipe that has a Perl program on the other end. Now every time any +program (like a mailer, news reader, finger program, etc.) tries to read +from that file, the reading program will read the new signature from your +program. We'll use the pipe-checking file-test operator, B<-p>, to find +out whether anyone (or anything) has accidentally removed our fifo. + + chdir(); # go home + my $FIFO = ".signature"; + + while (1) { + unless (-p $FIFO) { + unlink $FIFO; # discard any failure, will catch later + require POSIX; # delayed loading of heavy module + POSIX::mkfifo($FIFO, 0700) + || die "can't mkfifo $FIFO: $!"; + } + + # next line blocks till there's a reader + open (FIFO, "> $FIFO") || die "can't open $FIFO: $!"; + print FIFO "John Smith (smith\@host.org)\n", `fortune -s`; + close(FIFO) || die "can't close $FIFO: $!"; + sleep 2; # to avoid dup signals + } + =head1 Using open() for IPC Perl's basic open() statement can also be used for unidirectional |