my $time = $forked{$name}{Time};
my $continue = 0;
- &DEBUG("PID => $forked{$name}{PID}");
+ $continue++ if ($forked{$name}{PID} == $$);
- if (-d "/proc/$forked{$name}{PID}") {
+ if ($continue) {
+ &WARN("hrm.. fork pid == mypid == $$; how did this happen?");
+
+ } elsif ( -d "/proc/$forked{$name}{PID}") {
&status("fork: still running; good. BAIL OUT.");
+ return 0;
+
} else {
&WARN("Found dead fork; removing and resetting.");
$continue = 1;
if ($continue) {
# NOTHING.
+
} elsif (time() - $time > 900) { # stale fork > 15m.
&status("forked: forked{$name} presumably exited without notifying us.");
+
} else { # fresh fork.
&msg($who, "$name is already running ". &Time2String(time() - $time));
return 0;
}
$forked{$name}{Time} = time();
+ $forked{$name}{PID} = $$;
$forkedtime = time();
$count{'Fork'}++;
return 1;