KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have created a pthread, and installed a signal handler inside that, same way as we do in main( ) function. The thread's signal handler is a separate function. Surprisingly, it is not working, that is the thread's signal handler is not able to catch signals. Here is the code: #include <pthread.h> #include <unistd.h> #include <sys/types.h> #include <stdio.h> #include <signal.h> #include <string.h> typedef struct data { char name[10]; int age; }data; void sig_func(int sig) { printf("Caught signal: %d\n",sig); signal(SIGSEGV,sig_func); } void func(data *p) { printf("This is from thread function\n"); signal(SIGSEGV,sig_func); // Register signal handler inside thread strcpy(p->name,"Mr. Linux"); p->age=30; sleep(2); // Sleep to catch the signal } int main() { pthread_t tid; pthread_attr_t attr; data *ptr; pthread_attr_init(&attr); pthread_create(&tid,&attr,(void*)func,ptr); pthread_kill(tid,SIGSEGV); pthread_join(tid,NULL); printf("Name:%s\n",ptr->name); printf("Age:%d\n",ptr->age); } Output: Segmentation fault (which means the signal is not caught by handler)
Tags (comma-separated)
Save Edits
Cancel