主要使用了sigwait与pthread_kill
//------------------------------------------------
// signaltest.c
// 作者:yang_dk
//
// 子线程阻塞,等待信号,然后输出字符串
// 主线程从键盘录入字符,给子线程发信号
//------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <signal.
pthread_t tid;
sigset_t set;
static void* mythread(void *p)
{
int signum;
while(1){
sigwait(&set,&signum);
printf("hello/n");
}
}
int main()
{
char tmp;
sigemptyset(&set);
sigaddset(&set,SIGUSR1);
sigprocmask(SIG_SETMASK,&set,NULL);
pthread_create(&tid,NULL,mythread,NULL);
while(1)
{
printf(":");
scanf("%c",&tmp);
if('a' == tmp)
{
pthread_kill(tid,SIGUSR1);
}
else if('q'==tmp)
break;
else
continue;
}
return 0;
}