亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1009 | 回復(fù): 0
打印 上一主題 下一主題

Linux 信號集 淺析 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-12-22 08:51 |只看該作者 |倒序瀏覽
Linux信號有多種說法。一個進程創(chuàng)建一個信號用于發(fā)送給另外一個進程叫做發(fā)送一個信號,內(nèi)核創(chuàng)建一個信號叫做生成一個信號,進程自己向自己發(fā)送信號叫做喚起一個信號。不過我看也沒必要這么學(xué)究氣。
  信號集--signel set,其實就是將多個信號放在集合中進行集中的處理。POSIX.1定義了sigset_t以包涵一個信號集,并且定義了五個處理信號的函數(shù):
  int sigemptyset(sigset_t *set);
  int sigfillset(sigset_t *set);
  int sigaddset(sigset_t *set,int signo);
  int sigdelset(sigset_t *set,int signo)
  int sigismember(const sigset_t *set,int signo);
  還有一個重要的函數(shù):int sigprocmask(int how,const sigset_t *restrict set,sigset_t *restrict oset);
  單純講這些函數(shù)很難講明白,下面結(jié)合程序來講,程序來自UNIX環(huán)境高級編程:
  
   static void sig_quit(int);   //信號處理函數(shù)
   int main( )
  {
     sigset_t newmask,oldmask,pendmask;
     if(signal(SIGQUIT,sig_quit)==SIG_ERR)
            err_sys("can not catch SIGQUIT");
     -----------------------------------------------------------------------------------------------------------
     sigemptyset(&newmask);    //清空信號掩碼集newmask,不阻塞任何信號
     sigaddset(&newmask,SIGQUIT);  //將SIGQUIT信號放入信號集newmask中去
    
     if(sigprocmask(SIG_BLOCK,&newmask,&oldmask)<0) //將oldmask 和newmask合并
             err_sys("SIG_BLOCK error");  //當前信號屏蔽字放在newmask里,以前的放在oldmask里
    
     sleep(5);
     if(sigpending(&pendmask)<0)   //保存所有被阻塞的信號,本例即保存SIGQUIT到pendmask中去
              err_sys("sigpending error");
     if(sigismember(&pendmask,SIGQUIT)) //測試SIGQUIT是否在信號掩碼集pendmask中
              err_sys("SIGQUIT pending");
     if(sigprocmask(SIG_SETMASK,&oldmask,NULL)<0)  //將信號屏蔽字恢復(fù)為原來的信號集
              err_sys("SIG_SETMASK error");
     printf("SIGQUIT unblocked");
     sleep(5);
     exit(0);
}
static  void sig_quit(int signo)
{
   if(signal(SIGQUIT,SIG_DFL)==SIG_ERR)
               err_sys("can not reset SIGQUIT");
}
   
  這個就是這幾個函數(shù)的作用。通過實例來講解,理解會更加明白一些
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP