当前位置: 首页 > news >正文

linux中使用pthread_kill函数测试线程是否存活的例子

linux中使用pthread_kill函数测试线程是否存活的例子

原文地址:

下午实验编写了使用pthread_kill函数检测一个线程是否还活着的程序,在linux环境下gcc编译通过,现将代码贴在下面:

/******************************* pthread_kill.c *******************************/

复制代码
/******************************* pthread_kill.c *******************************/
#include
<stdio.h>
#include
<stdlib.h>
#include
<pthread.h>
#include
<errno.h>

void *func1()/*1秒钟之后退出*/
{
sleep(
1);
printf(
"线程1(ID:0x%x)退出。\n",(unsigned int)pthread_self());
pthread_exit((
void *)0);
}

void *func2()/*5秒钟之后退出*/
{
sleep(
5);
printf(
"线程2(ID:0x%x)退出。\n",(unsigned int)pthread_self());
pthread_exit((
void *)0);
}

void test_pthread(pthread_t tid) /*pthread_kill的返回值:成功(0) 线程不存在(ESRCH) 信号不合法(EINVAL)*/
{
int pthread_kill_err;
pthread_kill_err
= pthread_kill(tid,0);

if(pthread_kill_err == ESRCH)
printf(
"ID为0x%x的线程不存在或者已经退出。\n",(unsigned int)tid);
else if(pthread_kill_err == EINVAL)
printf(
"发送信号非法。\n");
else
printf(
"ID为0x%x的线程目前仍然存活。\n",(unsigned int)tid);
}

int main()
{
int ret;
pthread_t tid1,tid2;

pthread_create(
&tid1,NULL,func1,NULL);
pthread_create(
&tid2,NULL,func2,NULL);

sleep(
3);/*创建两个进程3秒钟之后,分别测试一下它们是否还活着*/

test_pthread(tid1);
/*测试ID为tid1的线程是否存在*/
test_pthread(tid2);
/*测试ID为tid2的线程是否存在*/

exit(
0);
}
复制代码

相关文章:

  • 在SharePoint中对文档库(列表)进行的一些操作
  • Linux下TCP keepalive心跳设置
  • 利用SQL存储过程创建交叉表
  • Program received signal SIGUSR1, User defined signal 1.解决方法
  • 在Linux中创建静态库.a和动态库.so
  • 弹出窗口中修改值数据后,父窗口中加载修改后的数据
  • makefile查找文件是否含某特定字符,若没有才添加;
  • makefile查找文件是否存在,不存在才拷贝;
  • 企业财务报表的分析方法(The analysis of financial statements)
  • c/c++经典面试题
  • 分形艺术 ---- 忘却记忆
  • char和unsigned char--数据类型区别
  • 一个电脑**和黑客的对话(笑死你)
  • Python使用Glob查找文件
  • 关于struts2
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • express如何解决request entity too large问题
  • Fabric架构演变之路
  • HashMap剖析之内部结构
  • Laravel核心解读--Facades
  • Python实现BT种子转化为磁力链接【实战】
  • webpack入门学习手记(二)
  • Web标准制定过程
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 对超线程几个不同角度的解释
  • 回顾 Swift 多平台移植进度 #2
  • 回顾2016
  • 开源地图数据可视化库——mapnik
  • 如何设计一个微型分布式架构?
  • 实现简单的正则表达式引擎
  • 微信开放平台全网发布【失败】的几点排查方法
  • 一起参Ember.js讨论、问答社区。
  • # .NET Framework中使用命名管道进行进程间通信
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #前后端分离# 头条发布系统
  • (3)(3.5) 遥测无线电区域条例
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (编译到47%失败)to be deleted
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (差分)胡桃爱原石
  • (第27天)Oracle 数据泵转换分区表
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (九十四)函数和二维数组
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (三)docker:Dockerfile构建容器运行jar包
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (转) Face-Resources
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • @font-face 用字体画图标
  • [AIGC] SQL中的数据添加和操作:数据类型介绍
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [BZOJ5250][九省联考2018]秘密袭击(DP)
  • [C/C++]数据结构 深入挖掘环形链表问题
  • [C++]AVL树怎么转