- 论坛徽章:
- 0
|
LINUX下进程中的线程信号问题
进程A 首先安装一个信号处理过程(void *b(int num)) SIGUSR1的。然后又创建了10个线程,安装了另一个信号处理过程(void *c(int num)),也是SIGUSR1的,此时问题出现了。
当我向这个进程发信号时,谁会收到呢?书上说是这个进程中所有的线程包含主线程都会收到并根据自已的处理函进行处理,但是测试结果确不是这样的,事实上只有一个线程收到。
这是怎么回事?请高手指点,还是代码有问题,如下:
- int k=0;
- void hello(int num)
- {
- printf("pid=%d ,tid=%d ,recieve %d \n",getpid(),pthread_self(),num);
- }
- void show(int num)
- {
- printf("main recieve %d\n",num);
- }
- void *run()
- {
- int i;
- printf("start install==%d,tid=%d\n",k,pthread_self());
- signal(10,hello);
-
- printf("end install==%d\n",k++);
- while(1);
- }
- int main()
- {
- int i;
- int res;
- pthread_t td[10];
- signal(10,show);
- //InstallSig(10,show);
- printf("m7ypid=%d,tid=%d\n",getpid(),pthread_self());
- getchar();
- for(i=0;i<10;i++)
- {
- res=pthread_create(&td[i],NULL,run,NULL);
- }
- while(1);
- return 0;
- }
复制代码 |
|