Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8168814
  • 博文数量: 595
  • 博客积分: 13065
  • 博客等级: 上将
  • 技术积分: 10334
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-26 16:44
个人简介

推荐: blog.csdn.net/aquester https://github.com/eyjian https://www.cnblogs.com/aquester http://blog.chinaunix.net/uid/20682147.html

文章分类

全部博文(595)

分类: C/C++

2020-01-16 14:34:02

 

Linux上执行“man raise”,即可看到两者的区别:

 

函数raise

函数kill

函数性质

LIBC函数,

raise基于系统调用kill或tgkill(如果内核支持)实现

系统调用,不是LIBC库函数

单线程程序

raise(sig)效果等同kill(getpid(), sig)

 

多线程程序

raise(sig)效果等同pthread_kill(pthread_self(), sig)

 

 

在多线程程序中,进程给自己发SIGTERM信号退出,应当调用“kill(getpid(), SIGTERM)”,而不是“raise(SIGTERM)”。

阅读(1347) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~