POSIX threads question.

Logan Gabriel gersh at tabby.sonn.com
Tue Jul 6 20:17:24 PDT 2004


I have a question about the POSIX standard regrading sigwait().  In
FreeBSD 4.x and 5.x (with -lc_r) the behaviour of sigwait to delete
SIGCHLD (And some others) from its waitset:

>From 4.x (libc_r/uthread/uthread_sigwait.c)

        /* These signals can't be waited on. */
        sigdelset(&waitset, SIGKILL);
        sigdelset(&waitset, SIGSTOP);
        sigdelset(&waitset, _SCHED_SIGNAL);
        sigdelset(&waitset, SIGCHLD);
        sigdelset(&waitset, SIGINFO);

Does the POSIX standard say that these signals cannot be waited on or is
it specfic undefined behaviour.  Linux (RedHat 9.1/Suse 9.1), Solaris 8
and MacOS X will let me use sigwait() to wait for SIGCHLD.  FreeBSD 5.2.1
will let me do it if I use -lpthread instead of -lc_r.

(Please CC me on any responses as I am not subscribed to standards@)

Logan Gabriel.

More information about the freebsd-standards mailing list