--- src/lib/Dispatch/dispatcher.c.orig Wed Aug 25 07:59:45 1993 +++ src/lib/Dispatch/dispatcher.c Sun Sep 5 14:05:04 1999 @@ -631,16 +631,23 @@ if (!_cqueue->isEmpty()) { #ifdef SV_INTERRUPT /* BSD-style */ +#ifdef __FreeBSD__ + sv.sv_handler = (sig_t)fxSIGVECHANDLER(&Dispatcher::sigCLD); +#else sv.sv_handler = fxSIGVECHANDLER(&Dispatcher::sigCLD); +#endif sv.sv_flags = SV_INTERRUPT; - sigvec(SIGCLD, &sv, &osv); + /*sigvec(SIGCLD, &sv, &osv);*/ + sigvec(SIGCHLD, &sv, &osv); #else #ifdef SA_NOCLDSTOP /* POSIX */ sa.sa_handler = fxSIGACTIONHANDLER(&Dispatcher::sigCLD); sa.sa_flags = SA_INTERRUPT; - sigaction(SIGCLD, &sa, &osa); + /*sigaction(SIGCLD, &sa, &osa);*/ + sigaction(SIGCHLD, &sa, &osa); #else /* System V-style */ - osig = (void (*)())signal(SIGCLD, fxSIGHANDLER(&Dispatcher::sigCLD)); + /*osig = (void (*)())signal(SIGCLD, fxSIGHANDLER(&Dispatcher::sigCLD));*/ + osig = (void (*)())signal(SIGCHLD, fxSIGHANDLER(&Dispatcher::sigCLD)); #endif #endif } @@ -661,12 +668,15 @@ } while (nfound < 0 && !handleError()); if (!_cqueue->isEmpty()) { #ifdef SV_INTERRUPT /* BSD-style */ - sigvec(SIGCLD, &osv, (struct sigvec*) 0); + /*sigvec(SIGCLD, &osv, (struct sigvec*) 0);*/ + sigvec(SIGCHLD, &osv, (struct sigvec*) 0); #else #ifdef SA_NOCLDSTOP /* POSIX */ - sigaction(SIGCLD, &osa, (struct sigaction*) 0); + /*sigaction(SIGCLD, &osa, (struct sigaction*) 0);*/ + sigaction(SIGCHLD, &osa, (struct sigaction*) 0); #else /* System V-style */ - (void) signal(SIGCLD, fxSIGHANDLER(osig)); + /*(void) signal(SIGCLD, fxSIGHANDLER(osig));*/ + (void) signal(SIGCHLD, fxSIGHANDLER(osig)); #endif #endif }