天天看點

C中得到4号錯誤(中斷),怎麼辦

errno如果是4,表示被中斷的系統調用。

怎麼辦?

  • 自動重新開機
struct sigaction action;
 
action.sa_handler = handler_func;
sigemptyset(&action.sa_mask);
action.sa_flags   = 0;
/* 設定SA_RESTART屬性 */
action.sa_flags  |= SA_RESTART;
 
sigaction(SIGALRM, &action, NULL);      
  • 忽略信号
struct sigaction action;
 
action.sa_handler = SIG_IGN;
sigemptyset(&action.sa_mask);
 
sigaction(SIGALRM, &action, NULL);      

注意,這會導緻alarm之類的失效。

繼續閱讀