学习对线程 发送 signal

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <pthread.h> static sigset_t set; void myfunc()
{
printf("get SIGUSR1.\n");
}
static void *mythread(void *p)
{
int signum;
while ()
{
sigwait(&set, &signum);
if (SIGUSR1 == signum)
myfunc();
if (SIGUSR2 == signum)
{
printf("sleep 2s,then exit\n");
sleep();
break;
}
}
} int main()
{
char tmp;
int iCh = ;
pthread_t tid;
void *status;
sigemptyset(&set);
sigaddset(&set, SIGUSR1);
sigaddset(&set, SIGUSR2);
sigprocmask(SIG_SETMASK, &set, NULL);
pthread_create(&tid, NULL, mythread, NULL);
while ()
{
printf("Please input a char:\n");
scanf("%c", &tmp);
getchar(); // get "enter key" if ('a' == tmp)
{
pthread_kill(tid, SIGUSR1); //发送SIGUSR1,打印字符串。
}
else if ('q' == tmp)
{
//发出SIGUSR2信号,让线程退出,如果发送SIGKILL,线程将直接退出。
pthread_kill(tid, SIGUSR2);
//等待线程tid执行完毕,这里阻塞。
pthread_join(tid, &status);
printf("finish\n");
break;
}
else
continue;
}
return ;
}
05-11 09:22