Both of these examples are fine for stuff that doesn't do any
calls to system or exec.
But that's probably exactly what he wanted to do.
The quick answer is: Read perlipc and go on from there.
Long answer: working on that ;-)
Update:
Here's the long answer:
#!/usr/bin/env perl
use strict;
use warnings;
use POSIX qw/:sys_wait_h/;
my $child_pid = undef;
my $status = fork;
die "failed to fork\n" unless defined $status;
if ($status > 0) {
# this is the parent process.
local $SIG{ALRM} = sub { print STDERR "operation timed out for PID $
+status\n"; kill 9, $status };
alarm 10;
my $pid = 0;
do {
$pid = POSIX::waitpid ($status, POSIX::WNOHANG);
} until ($pid > 0);
alarm 0;
} else {
# this is the child process.
system "ssh a_server_could_hang";
}
For any non-portability hit your OS vendor :-(
Kay |