C程序中的raise和kill兩個函數有何不同?

 

在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)”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章