Date: Mon, 30 Jun 2003 09:37:49 -0400 (EDT) From: Daniel Eischen <eischen@vigrid.com> To: xiong jinshan <xiongjinshan@yahoo.com> Cc: threads@freebsd.org Subject: Re: About the kse signal process Message-ID: <Pine.GSO.4.10.10306300936460.22873-100000@pcnet5.pcnet.com> In-Reply-To: <20030630080920.82179.qmail@web80504.mail.yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 30 Jun 2003, xiong jinshan wrote:
> Hi,
> I am wondering that the following piece of code
> can't work with the unix semantics. I tested it with
> 5.1 release and i386 arch. By unix sementics, if I
> send the SIGALRM to this running programme, it should
> be received by the thr_func() only, and print a prompt
> msg on the console.
Yes, only thr_func() should receive the alarm.
>
> Reguards,
> JinShan
>
> Ps: c code:
>
> /* vi: set ts=4 sw=4 expandtab: */
> #include <stdio.h>
> #include <signal.h>
> #include <pthread.h>
>
> void sigalrm_handler(int signo)
> {
> if(signo != SIGALRM)
> abort();
>
> printf("Received sig alarm!\n");
> return;
> }
>
> void thr_func(void)
> {
> sigset_t mask;
> struct sigaction sa;
>
> sigemptyset(&mask);
> sigaddset(&mask, SIGALRM);
> pthread_sigmask(SIG_UNBLOCK, &mask, NULL);
>
> memset(&sa, 0, sizeof(struct sigaction));
> sa.sa_handler = sigalrm_handler;
> sigaction(SIGALRM, &sa, NULL);
>
> while(1);
> }
>
> main()
> {
> int err;
> pthread_t pth;
> sigset_t mask;
>
> sigfillset(&mask);
> sigprocmask(SIG_BLOCK, &mask, NULL);
>
> err = pthread_create(&pth, NULL, thr_func, NULL);
> if(err < 0) {
> perror("pthread_create!\n");
> return -1;
> }
>
> while(1);
--
Dan Eischen
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.10.10306300936460.22873-100000>
