[Nagiosplug-devel] check_dns: DNS WARNING - nslookup returned error status
Ton Voon
tonvoon at mac.com
Fri Sep 2 06:53:41 CEST 2005
On 2 Sep 2005, at 13:40, sean finney wrote:
> so what, redhat is now defaulting to having that set? i think i see a
> way around this, but i'm not sure:
>
> - set a signal handler for SIGCHLD
> - when SIGCHLD is thrown, we do exactly the opposite from the
> above, and
> *not* call any wait functions.
>
> i think that should leave the child as a zombie, for our later call to
> waitpid.
Tried this patch to popen.c:
--- popen.c.original 2005-09-02 14:02:33.760495184 +0100
+++ popen.c 2005-09-02 14:30:08.322963456 +0100
@@ -67,6 +67,8 @@
/*extern pid_t *childpid = NULL; *//* ptr to array allocated at run-
time */
static int
maxfd; /
* from our open_max(), {Prog openmax} */
+void sigchld_handler(int signo) { printf( "Caught sigchld\n");
return; } /* Do nothing */
+
FILE *
spopen (const char *cmdstring)
{
@@ -171,6 +173,7 @@
if (pipe (pfderr) < 0)
return
(NULL); /* errno set
by pipe() */
+ signal(SIGCHLD, &sigchld_handler);
if ((pid = fork ()) < 0)
return
(NULL); /* errno set
by fork() */
else if (pid == 0) { /*
child */
While this works consistently on debian and MacOSX (with output of:
Caught sigchld
DNS OK: 0.099 seconds response time altinity.com returns
216.68.81.208|time=0.098571s;;;0.000000
wrapped in a 'while true; do ./check_dns -H altinity.com || break ;
done' loop), I still get the occasional error on Red Hat. Amazingly,
there is no Caught sigchld for the failing scenario, which I find
hard to understand. Any other suggestions from anyone?
Ton
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nagios-plugins.org/archive/devel/attachments/20050902/97ebdbd1/attachment.html>
More information about the Devel
mailing list