【Linux 应用开发】pthread_kill() 检查线程是否存在
该函数可以用于向指定的线程发送信号:
int pthread_kill(pthread_t threadId,int signal);
如果线程内不对信号进行处理,则调用默认的处理程式,如SIGQUIT会退出终止线程,SIGKILL会杀死线程等等,可以调用signal(SIGQUIT, sig_process_routine); 来自定义信号的处理程序。
传递的pthread_kill的signal参数一般都是大于0的,这时系统默认或者自定义的都是有相应的处理程序。
signal为0时,是一个被保留的信号,一般用这个保留的信号测试线程是否存在。
pthread_kill 返回值如下:
0:调用成功。
ESRCH:线程不存在。
EINVAL:信号不合法。
实例程序:
int kill_ret = pthread_kill(thread_id,0);
if(kill_ret == ESRCH)
printf("指定的线程不存在或者是已经终止\n");
else if(kill_ret == EINVAL)
printf("调用传递一个无用的信号\n");
else //(kill_ret == 0)
printf("线程存在\n");
我的实际编程经历:
今天编程用到了 pthread_kill, 编译后发现 ESRCH 未定义。
根据下面的描述,可以把 if(kill_ret == ESRCH)
改成 if(kill_ret != 0)
用于检测线程本身是否存在。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具