推荐: 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)”。