• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            BLUESKY
            一步一個腳印向前走
                   POSIX 表示可移植操作系統接口,英文全稱為:Portable Operating System Interface ,IEEE最初開發POSIX標準,是為了提高UNIX環境下應用程序的可移植性,但POSIX并不局限與UNIX,許多其他的操作系統都支持POSIX標準 
               
                  看了幾天的Unix網絡編程中Posix信號處理這章內容,了解了些關于signal的相關知識,現在總結下:
                   
                  首先,要知道什么是信號,信號是事件發生時對進程的通知,又可以稱為軟中斷; 
                   其次,信號是如何產生的,書中描述有2種可能,一是進程間的相互發送,二是由內核產生并發送至進程;
                   最后,信號如何捕獲和處理呢,下面具體說明的

                  看了書中的代碼以及相關的說明以后,我在網上查了下signal的相關處理函數以及signal.h的頭文件定義,可以利用索引查到相關的函數和頭文件說明
                  這個網址是http://www.opengroup.org/onlinepubs/009695399/

                   網上的對關于signal的處理方法做了如下的說明:

                   The signal() function chooses one of three ways in which receipt of the signal number sig is to be subsequently handled.
                   If the value of func is SIG_DFL, default handling for that signal shall occur.
                   If the value of func is SIG_IGN, the signal shall be ignored.
                   Otherwise, the application shall ensure that func points to a function to be called when that signal occurs.

                   上面一共描述了三種方法:

                   首先是可以設置默認的信號處理方法(SIG_DFL),默認的信號處理方法一般為接受到該信號時終止進程,個別信號的缺省處理方法是忽略
                       signal(SIGCHLD,SIG_DFL) --將SIGCHLD信號的處理方法設置為缺省的處理方法
                   其次是可以設置忽略的信號處理方法(SIG_IGN),但是有2個信號是不可以忽略的
                       SIGKILL  Kill(cannot be caught or ignored).
                       SIGSTOP  Stop executing (cannot be caught or ignored).

                       signal(SIGALRM,SIG_IGN) --將SIGALRM信號的處理方法設置為忽略的處理方法

                   最后是可以指定自定義的信號處理方法
                       簡單的方法是用signal函數,它的第一個參數是信號名,第二個參數是指向函數的指針或為常值SIG_DFL或SIG_IGN
                       但是,我們還可以利用sigaction自定義自己的信號處理函數

                       struct sigaction sa;
                       sa.sa_handler = 函數名;
                       sigemptyset(&sa.sa_mask);
                       sa.sa_flags = SA_RESTART;/* Restart functions if interrupted by handler */
                       if (sigaction(SIGINT, &sa, NULL) == -1)
                         /* Handle error */;

                   這就是signal的一些處理方法和步驟,但有時候我們并不用系統直接提供的signal函數,而是利用sigaction自己構造信號的特定處理方法
                   但是還有點迷惑的是就是對SA_RESTAR的定義不是很了解,還得多差點資料

                   上述的網站上是對SA_RESTART做下面的解釋的:
                   This flag affects the behavior of interruptible functions; that is, those specified to fail with errno set to [EINTR]. 
                   If set,and a function specified as interruptible is interrupted by this signal,the function shall restart and shall not fail with [EINTR] unless specified. 
                   If the flag is not set, interruptible functions interrupted by this signal shall fail with errno set to [EINTR]
             
                   書中是這樣解釋的:如果設置,由此信號中斷的系統調用將由內核自動重啟
                  
                   最后,還有一個名詞就是慢系統調用(slow system call),永遠阻塞的系統調用是指調用可能永遠無法返回,慢系統調用一般就是來描述可能永遠阻塞的系統調用
                   比如:
                       1、如果沒有客戶機連接到服務器上,則服務器的accept的調用就沒有返回保證了
                 
            posted on 2007-09-03 09:12 LG 閱讀(1265) 評論(0)  編輯 收藏 引用 所屬分類: UnixProgram

            <2008年1月>
            303112345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            常用鏈接

            相冊

            最新評論

            一本大道久久a久久精品综合| 国产农村妇女毛片精品久久| 一本色道久久88精品综合| 伊人久久精品无码av一区| 久久精品午夜一区二区福利| 狠狠综合久久综合中文88| 久久精品国产男包| 久久久久国产精品| 思思久久好好热精品国产| 欧美大香线蕉线伊人久久| 曰曰摸天天摸人人看久久久| 伊人色综合九久久天天蜜桃| 91久久精品91久久性色| 久久嫩草影院免费看夜色| 久久亚洲国产成人精品性色| 久久久久黑人强伦姧人妻| 久久水蜜桃亚洲av无码精品麻豆| 国产精品热久久毛片| 亚洲日本va中文字幕久久| 国产伊人久久| 青青青青久久精品国产h| 亚洲人成精品久久久久| 久久国产精品一区| 久久国产成人精品麻豆| 久久一日本道色综合久久| 亚洲精品国产综合久久一线| 成人午夜精品久久久久久久小说| 国产高潮国产高潮久久久| 亚洲日韩中文无码久久| 国产成人精品久久| 久久精品国产免费观看| 久久婷婷人人澡人人爽人人爱| 久久精品亚洲男人的天堂| 久久线看观看精品香蕉国产| 2021精品国产综合久久| 久久久久亚洲av无码专区喷水 | 久久免费99精品国产自在现线| 久久精品国产精品青草| 91精品国产综合久久精品| 国产精品久久久久久久久| 国内精品伊人久久久久|