=head1 NAME
-perlfaq8 - System Interaction ($Revision: 1.27 $, $Date: 2005/12/31 00:54:37 $)
+perlfaq8 - System Interaction ($Revision: 3606 $)
=head1 DESCRIPTION
use IPC::Open3;
use Symbol qw(gensym);
use IO::File;
- local *CATCHOUT = IO::File->new_tempfile;
- local *CATCHERR = IO::File->new_tempfile;
+ local *CATCHOUT = IO::File->new_tmpfile;
+ local *CATCHERR = IO::File->new_tmpfile;
my $pid = open3(gensym, ">&CATCHOUT", ">&CATCHERR", "cmd");
waitpid($pid, 0);
seek $_, 0, 0 for \*CATCHOUT, \*CATCHERR;
use IPC::Open3;
use Symbol qw(gensym);
use IO::File;
- local *CATCHERR = IO::File->new_tempfile;
+ local *CATCHERR = IO::File->new_tmpfile;
my $pid = open3(gensym, \*CATCHOUT, ">&CATCHERR", "cmd");
while( <CATCHOUT> ) {}
waitpid($pid, 0);
the current process group of your controlling terminal as follows:
use POSIX qw/getpgrp tcgetpgrp/;
- open(TTY, "/dev/tty") or die $!;
- $tpgrp = tcgetpgrp(fileno(*TTY));
- $pgrp = getpgrp();
- if ($tpgrp == $pgrp) {
- print "foreground\n";
+
+ # Some POSIX systems, such as Linux, can be
+ # without a /dev/tty at boot time.
+ if (!open(TTY, "/dev/tty")) {
+ print "no tty\n";
} else {
- print "background\n";
+ $tpgrp = tcgetpgrp(fileno(*TTY));
+ $pgrp = getpgrp();
+ if ($tpgrp == $pgrp) {
+ print "foreground\n";
+ } else {
+ print "background\n";
+ }
}
=head2 How do I timeout a slow event?
constants. Sometimes it is built using h2ph when Perl is installed,
but other times it is not. Modern programs C<use Socket;> instead.
+=head1 REVISION
+
+Revision: $Revision: 3606 $
+
+Date: $Date: 2006-03-06 12:05:47 +0100 (lun, 06 mar 2006) $
+
+See L<perlfaq> for source control details and availability.
+
=head1 AUTHOR AND COPYRIGHT
Copyright (c) 1997-2006 Tom Christiansen, Nathan Torkington, and