2015-08-15 82 views

回答

0

它是UNIX中的一個信號處理函數。

您聲明它,然後將它傳遞給sigaction()系統調用。

這裏未測試的代碼趕上USR1信號,您可以發送給您kill命令處理:

void my_function(int signal) { 
    continue_looping = 0; 
} 

volatile int continue_looping = 1; 

int main(void) { 
    struct sigaction sa; 
    sigset_t mask; 

    sa.sa_handler = &my_function; 
    sa.sa_flags = SA_RESETHAND; 
    sigfillset(&sa.sa_mask); 
    sigaction(SIGUSR1, &sa, NULL); 

    while(continue_looping) { 
     printf("Hello world\n"); 
    } 

    return 0; 
} 

從你的行動處理程序調用任何其它功能時,您應該謹慎。我通常在那裏設置一個標誌 - 就像上面的例子。

相關問題