Signals and threads

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From English to

Threaded View
    Hi

I have a problem using sigaction function in pthread library.
I have 2 thread each one registering

in threadA
 act1.sa_handler=func1;
 if(sigaction(SIGUSR1,&act1,NULL)) printf("\nSigaction failed! in th1
!!\n");

in threadB
 act1.sa_handler=func2;
 if(sigaction(SIGUSR1,&act2,NULL)) printf("\nSigaction failed! in th2
!!\n");

but when i send signal SIGUSR1 to threadA , threadA  receives the
signal
but the handler func2 is getting called,


Please let me know is there any way to solve this problem?
thanks in advance
thomas


Re: Signals and threads
Quoted text here. Click to load it


See the thread "Communication between threads of same PIDs" in this
forum. Does that help  ?

Re: Signals and threads


Quoted text here. Click to load it

thanks for the response,
It does not solve the problem.

In the pthread_library clone call is used , In the man page of clone
its given that
if CLONE_SIGHAND is not defined, the signal handlers will not be shared
between threads.
I recompiled the pthread library with out CLONE_SIGHAND .

I linked the program with the new library , It has been ok in the
do_fork call in the pthread funciton, A new struct of task_struct->sig
is allocated. Also i have seen that the sigaction function call in the
thread modifies and install a new handler in this already allocated
task_struct->sig structure.
Inspite of all this the last sig handler  function is getting called
when i send the signal to the first thread. Any clue???

thanks
thomas


Site Timeline