一:线程信号相关函数
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.h void* 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; }
运行代码