也许快乐总是产生于改善的过程,而不是目标达成时那转瞬即逝的满足感。有希望就是快乐的,不论这希望产生于多么黑暗的深渊。---摘自:《人生十二堂课》
pthread_kill:把信号发送给指定线程
#include <pthread.h>
int pthread_kill(pthread_t thread,int signo);
返回值:成功:0 失败:错误编号
功能:
向指定ID的线程发送signal信号,如果线程代码内不做处理,则按照信号默认的行为影响整个进程,也就是说,如果你给一个线程发送了SIGQUIT,但线程却没有实现signal处理函数,则整个进程退出。此函数还有一个重要的功能,那就是检测线程是否还活着。
当传一个0的值给参数signo时,此函数用于判断指定线程id(thread)的线程是否还活着。
pthread_kill(thread_pid,0);
返回值:
0:成功
ESRCH:线程不存在
EINVAL:信号不合法
代码示例:检测指定id的线程是否存活,存活返回1.
int pthread_alive(pthread_t thread_id)
{
//获取返回值
int kill_res = pthread_kill(thread_id,0);
//判断线程是否存在
if( kill_res == ESRCH)
{
printf("thread_id :%d thread not exist\n",thread_id);
return -1;
}
//发送信号是否正确,一般不会走到这
else if(kill_res == EINVAL)
{
printf("signal is error\n");
return -1;
}
//线程存活
return 0;
}