弗洛伊德認為:要解決這些苦惱,當事人就要通過回憶并理解自己早期的童年經歷,來獲得對潛意識沖突的頓悟。弗洛伊德的療法被稱為“精神分析” (psychoanalysis),在 20 世紀的很長一段時間被心理衛生從業者廣為采用。 —— 《Change Your Thinking》
ilocker:關注 Android 安全(新入行,0基礎) QQ: 2597294287
1 #include <signal.h>2 void (*signal(int signo, void (*func)(int)))(int);
為 signo 指定的信號設置信號處理程序。成功則返回指向之前信號處理程序的函數指針,出錯則返回 SIG_ERR。
如果看不懂 signal 的函數聲明,就要好好復習一下 c/c++ 的基礎(函數指針)了。
將 signal 函數的聲明簡化一下:
1 typedef void SigFunc(int); //信號處理函數原型2 Sigfunc * signal(int signo, SigFunc * func);
簡單示例:
1 void sig_handler(int signo) { 2 if (SIGUSR1 == signo) 3 PRintf(“received SIGUSR1.”); 4 else 5 printf(“received signal %d.”, signo); 6 } 7 8 int main() { 9 if (SIG_ERR == signal(SIGUSR1, sig_handler))10 printf(“can’t catch SIGUSR1”);11 12 for ( ; ; )13 pause();14 }還可將信號處理函數設置為 SIG_IGN (表示忽略此信號) 或 SIG_DFL (表示使用系統默認的信號處理程序)。
信號 SIGSTOP、SIGKILL 無法捕獲或忽略。
記錄以下兩點,但沒有驗證,不確定是否表述正確:
除了 signal,還有 sigaction 函數可以設置信號處理函數,比 signal 要復雜些,后面接著再寫筆記。
學習資料: 《unix 環境高級編程》
新聞熱點
疑難解答