1. 程式人生 > 其它 >linux c++網路程式設計 --- 訊號捕捉

linux c++網路程式設計 --- 訊號捕捉

技術標籤:C語言linux網路程式設計

#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 就是不安全的。。。。這裡只是演示