X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlfaq8.pod;h=19be3be74f292943594aa99b4110b44d9111919b;hb=0c8d858bc5dbd18f38dfa055bba011a276ec0bb8;hp=0b0d1ecc0d5edcd0ea82957954ff917e29a5521b;hpb=a6dd486b7feb5918da837e5ad585c8ce954f9bbf;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlfaq8.pod b/pod/perlfaq8.pod index 0b0d1ec..19be3be 100644 --- a/pod/perlfaq8.pod +++ b/pod/perlfaq8.pod @@ -1,6 +1,6 @@ =head1 NAME -perlfaq8 - System Interaction ($Revision: 1.39 $, $Date: 1999/05/23 18:37:57 $) +perlfaq8 - System Interaction ($Revision: 1.2 $, $Date: 2001/10/16 13:27:22 $) =head1 DESCRIPTION @@ -217,7 +217,7 @@ FAQ for that.) There's an example of this in L). First, you put the terminal into "no echo" mode, then just read the password normally. You may do this with an old-style ioctl() function, POSIX terminal -control (see L and Chapter 7 of the Camel, 2nd ed.), or a call +control (see L or its documentation the Camel Book), or a call to the B program, with varying degrees of portability. You can also do this for most systems using the Term::ReadKey module @@ -294,7 +294,7 @@ of code just because you're afraid of a little $| variable: DEV->autoflush(1); As mentioned in the previous item, this still doesn't work when using -socket I/O between Unix and Macintosh. You'll need to hardcode your +socket I/O between Unix and Macintosh. You'll need to hard code your line terminators, in that case. =item non-blocking input @@ -321,7 +321,7 @@ go bump in the night, finally came up with this: # been opened on a pipe... system("/bin/stty $stty"); $_ = ; - chop; + chomp; if ( !m/^Connected/ ) { print STDERR "$0: cu printed `$_' instead of `Connected'\n"; } @@ -389,7 +389,8 @@ Zombies are not an issue with C. You don't actually "trap" a control character. Instead, that character generates a signal which is sent to your terminal's currently foregrounded process group, which you then trap in your process. -Signals are documented in L and chapter 6 of the Camel. +Signals are documented in L and the +section on ``Signals'' in the Camel. Be warned that very few C libraries are re-entrant. Therefore, if you attempt to print() in a handler that got invoked during another stdio @@ -414,7 +415,8 @@ However, because syscalls restart by default, you'll find that if you're in a "slow" call, such as , read(), connect(), or wait(), that the only way to terminate them is by "longjumping" out; that is, by raising an exception. See the time-out handler for a -blocking flock() in L or chapter 6 of the Camel, 2nd ed. +blocking flock() in L or the section on ``Signals'' +in the Camel book. =head2 How do I modify the shadow password file on a Unix system? @@ -433,7 +435,7 @@ program. (There is no way to set the time and date on a per-process basis.) This mechanism will work for Unix, MS-DOS, Windows, and NT; the VMS equivalent is C. -However, if all you want to do is change your timezone, you can +However, if all you want to do is change your time zone, you can probably get away with setting an environment variable: $ENV{TZ} = "MST7MDT"; # unixish @@ -445,12 +447,14 @@ probably get away with setting an environment variable: If you want finer granularity than the 1 second that the sleep() function provides, the easiest way is to use the select() function as documented in L. Try the Time::HiRes and -the BSD::Itimer modules (available from CPAN). +the BSD::Itimer modules (available from CPAN, and starting from +Perl 5.8 Time::HiRes is part of the standard distribution). =head2 How can I measure time under a second? In general, you may not be able to. The Time::HiRes module (available -from CPAN) provides this functionality for some systems. +from CPAN, and starting from Perl 5.8 part of the standard distribution) +provides this functionality for some systems. If your system supports both the syscall() function in Perl as well as a system call like gettimeofday(2), then you may be able to do @@ -503,7 +507,8 @@ though, so if you use END blocks you should also use Perl's exception-handling mechanism is its eval() operator. You can use eval() as setjmp and die() as longjmp. For details of this, see the section on signals, especially the time-out handler for a blocking -flock() in L and chapter 6 of the Camel 2nd ed. +flock() in L or the section on ``Signals'' in +the Camel Book. If exception handling is all you're interested in, try the exceptions.pl library (part of the standard perl distribution). @@ -568,9 +573,9 @@ scripts inherently insecure. Perl gives you a number of options The IPC::Open2 module (part of the standard perl distribution) is an easy-to-use approach that internally uses pipe(), fork(), and exec() to do the job. Make sure you read the deadlock warnings in its documentation, -though (see L). See L and L +though (see L). See +L and +L You may also use the IPC::Open3 module (part of the standard perl distribution), but be warned that it has a different order of @@ -931,9 +936,9 @@ the current process group of your controlling terminal as follows: =head2 How do I timeout a slow event? Use the alarm() function, probably in conjunction with a signal -handler, as documented in L and chapter 6 of the -Camel. You may instead use the more flexible Sys::AlarmCall module -available from CPAN. +handler, as documented in L and the section on +``Signals'' in the Camel. You may instead use the more flexible +Sys::AlarmCall module available from CPAN. =head2 How do I set CPU limits? @@ -1086,12 +1091,8 @@ but other times it is not. Modern programs C instead. Copyright (c) 1997-1999 Tom Christiansen and Nathan Torkington. All rights reserved. -When included as part of the Standard Version of Perl, or as part of -its complete documentation whether printed or otherwise, this work -may be distributed only under the terms of Perl's Artistic License. -Any distribution of this file or derivatives thereof I -of that package require that special arrangements be made with -copyright holder. +This documentation is free; you can redistribute it and/or modify it +under the same terms as Perl itself. Irrespective of its distribution, all code examples in this file are hereby placed into the public domain. You are permitted and