Signals and threads

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

Translate This Thread From English to

Threaded View

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

in threadA
 if(sigaction(SIGUSR1,&act1,NULL)) printf("\nSigaction failed! in th1

in threadB
 if(sigaction(SIGUSR1,&act2,NULL)) printf("\nSigaction failed! in th2

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

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

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???


Site Timeline