线程的信号pthread

xiaoxiao2021-02-27  364

一:线程信号相关函数

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; }

运行代码

转载请注明原文地址: https://www.6miu.com/read-1100.html

最新回复(0)