zoukankan      html  css  js  c++  java
  • 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);
    }

      

  • 相关阅读:
    第03组 Beta冲刺(4/5)
    第03组 Beta冲刺(3/5)
    第03组 Beta冲刺(2/5)
    第03组 Beta冲刺(1/5)
    第03组 Alpha冲刺(6/6)
    第03组 Alpha冲刺(5/6)
    软工实践个人总结
    最终作业
    Beta答辩总结
    Beta 冲刺(7/7)
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2119310.html
Copyright © 2011-2022 走看看