(1)signal 信號捕捉函數:注冊一個信號捕捉函數(不參與捕捉,那是內核的事情)
? ? ? ? ? ? 函數實現:
? ? ? ? ? ? ? ? ? ? ? typedef? ?void(*sighandler_t)(int);? ?//聲明了一個函數指針(代表著一類函數:參數是一個int類型的參數,返回值為void)
? ? ? ? ? ? ? ? ? ? ?sighandler_t signal(int signum,sighandler_t handler);//信號捕捉函數,signum觸發信號,調用函數handler
? ? ? ? ? ? ? ? ? ? ?void? signalhandler(int signum){}? ?//信號捕捉函數要實現的功能
? ? ? ? ? 機理:主函數中通過使用一個函數指針(函數的入口地址)當做函數參數,通過函數指針來解決一類問題,從而實現接口和實現的解耦合過程,這也是C語言的一半的精髓所在。
(2)回調機制
? ? ? ? ? 1)回調函數解釋:來自https://www.jianshu.com/p/2f695d6fd64f的解釋
? ? ? ? ?
? ? ? ? ? ? ?通過函數參數來實現函數功能的遲綁定(有點兒C++多態的意味)
? ? ? ?2)函數指針的優點
? ? ? ? ? ? ? 通過給函數指針賦予不同的值,來實現函數中的一類問題,函數指針的不同,最后實現的功能也不同,有點兒類似C++模板的感覺。通過使用函數指針,使得函數接口和函數實現分離,實現解耦合,使得程序穩定性更強。