线程的信号pthread_kill()函数(线程四)

来源:互联网 发布:电话销售数据货源qq群 编辑:程序博客网 时间:2024/06/05 06:03

一:线程信号相关函数

1.pthread_kill()函数

该函数其实不是kill线程,而是向线程发送一个signal(线程所有函数中最名不符其实的函数吧。。。)

成功返回0,失败返回失败码。

第一个参数:要发送信号的线程tid。

第二个参数:0是保留信号,用来判断线程是否还存在

sig信号 (在/usr/include/bits/signum.h中)

二、代码

#include<stdio.h>#include<unistd.h>#include<pthread.h>#include<signal.h>//SIGQUIT /usr/include/bits/signum.h#include<errno.h>// ESRCH  /usr/include/asm-/error-bash.hvoid* thread_fun(void* arg){ //   sleep(1);    printf("i am new thread.\n");    return (void*)0;}int main(int argc ,char *argv[]){    pthread_t tid;    int err;    int res_kill;    err = pthread_create(&tid, NULL, thread_fun, NULL);    if(err != 0)    {           printf("new thread create is failed.\n");        return 0;    }       sleep(1);//pthread_kill()    res_kill = pthread_kill(tid, 0);//0 signal is retain sign,then no signal is send //  res_kill = pthread_kill(tid, SIGQUIT);//SIGQUIT signal is quit signal ,it will quit main process    if(res_kill == ESRCH)    {           printf("new thread tid is not found.\n");        printf("ret_kill = %d\n",res_kill);    }   //    void * retval;//    int thread_join = pthread_join(tid, &retval);    printf("i am main thread .\n");    return 0;}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     


运行代码

0 0