当前位置: 技术问答>linux和unix
关于线程sigwait()接不到其他线程发来的pthread_kill()信号的问题
来源: 互联网 发布时间:2017-05-04
本文导语: #include #include #include #include #include pthread_t tid1,tid2; sigset_t sigs; void* fun1(void* d) { int s; while(1) { sigwait(&sigs,&s); printf("action!n"); } } void* fun2(void *d) { while(1) { sleep(1); pthread_kill(tid1,35); } } int main() { sigemptyset(&s...
#include
#include
#include
#include
#include
pthread_t tid1,tid2;
sigset_t sigs;
void* fun1(void* d)
{
int s;
while(1)
{
sigwait(&sigs,&s);
printf("action!n");
}
}
void* fun2(void *d)
{
while(1)
{
sleep(1);
pthread_kill(tid1,35);
}
}
int main()
{
sigemptyset(&sigs);
sigaddset(&sigs,35);
pthread_create(&tid1,0,fun1,0);
sleep(1);
pthread_create(&tid2,0,fun2,0);
pthread_join(tid1,NULL);
pthread_join(tid2,NULL);
return 0;
}
我的本意是想用fun2线程去激活线程fun1,但是用pthread_kill()发送信号后,却直接终止进程
了,sigwait为什么接不到信号?
|
linux 下
什么都没动,只是copy + 编译 ....
什么都没动,只是copy + 编译 ....
|
先屏蔽掉这个信号,不同系统默认对信号的处理不同,你的ubuntu很明显就是默认处理了这个信号。