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>