linux c++網路程式設計 --- 訊號捕捉
阿新 • • 發佈:2020-12-13
#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> void sigusr(int signo) { if(signo == SIGUSR1) { printf("received sigusr1\n"); } else if(signo == SIGUSR2) { printf("received sigusr2\n"); } else { printf("other signal\n"); } } int main() { if(signal(SIGUSR1,sigusr) == SIG_ERR) { printf("error sigusr1\n"); } if(signal(SIGUSR2,sigusr) == SIG_ERR) { printf("error sigusr2\n"); } for(;;) { sleep(1); printf("sleep 1\n"); } return 0; }
所謂可重入函式:就是我們在訊號處理函式中呼叫它是安全的。。。。。。
可重入函式:在訊號處理程式中保證呼叫安全的函式,這些函式是可重入的並被稱為非同步訊號安全。
有一些大家周知的函式都是不可重入的,如malloc() printf()
sigusr 中呼叫 printf 就是不安全的。。。。這裡只是演示