当前位置:   article > 正文

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

pthread_kill

一:线程信号相关函数

1.pthread_kill()函数

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

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

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

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

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

二、代码

  1. #include<stdio.h>
  2. #include<unistd.h>
  3. #include<pthread.h>
  4. #include<signal.h>//SIGQUIT /usr/include/bits/signum.h
  5. #include<errno.h>// ESRCH /usr/include/asm-/error-bash.h
  6. void* thread_fun(void* arg)
  7. {
  8. // sleep(1);
  9. printf("i am new thread.\n");
  10. return (void*)0;
  11. }
  12. int main(int argc ,char *argv[])
  13. {
  14. pthread_t tid;
  15. int err;
  16. int res_kill;
  17. err = pthread_create(&tid, NULL, thread_fun, NULL);
  18. if(err != 0)
  19. {
  20. printf("new thread create is failed.\n");
  21. return 0;
  22. }
  23. sleep(1);
  24. //pthread_kill()
  25. res_kill = pthread_kill(tid, 0);//0 signal is retain sign,then no signal is send
  26. // res_kill = pthread_kill(tid, SIGQUIT);//SIGQUIT signal is quit signal ,it will quit main process
  27. if(res_kill == ESRCH)
  28. {
  29. printf("new thread tid is not found.\n");
  30. printf("ret_kill = %d\n",res_kill);
  31. }
  32. // void * retval;
  33. // int thread_join = pthread_join(tid, &retval);
  34. printf("i am main thread .\n");
  35. return 0;
  36. }


运行代码

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/283263
推荐阅读
  

闽ICP备14008679号