]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Shm.pl
- forgot to set forked{}{PID} in addForked
[infobot.git] / src / Shm.pl
index 136bd165b26544daa7a22725c4f37b69af5c8701..8d6e5a3882564f546d96305ae0dd80e2bc9827a9 100644 (file)
@@ -117,12 +117,20 @@ sub addForked {
        $count++;
     }
 
-    if (exists $forked{$name}) {
+    if (exists $forked{$name} and !scalar keys %{ $forked{$name} }) {
+       &WARN("addF: forked{$name} exists but is empty; deleting.");
+       undef $forked{$name};
+    }
+
+    if (exists $forked{$name} and scalar keys %{ $forked{$name} }) {
        my $time        = $forked{$name}{Time};
        my $continue    = 0;
 
-       if (-d "/proc/$forked{$name}{PID}") {
+       &DEBUG("PID => $forked{$name}{PID}");
+
+       if ( -d "/proc/$forked{$name}{PID}") {
            &status("fork: still running; good. BAIL OUT.");
+           return 0;
        } else {
            &WARN("Found dead fork; removing and resetting.");
            $continue = 1;
@@ -139,6 +147,7 @@ sub addForked {
     }
 
     $forked{$name}{Time}       = time();
+    $forked{$name}{PID}                = $$;
     $forkedtime                        = time();
     $count{'Fork'}++;
     return 1;
@@ -154,6 +163,10 @@ sub delForked {
        POSIX::_exit(0);
     }
 
+    if ($name =~ /\.pl/) {
+       &WARN("dF: name is name of source file ($name). FIX IT!");
+    }
+
     &showProc();       # just for informational purposes.
 
     if (exists $forked{$name}) {