一起talk C栗子吧(第八十四回:C語言執行個體--使用訊號進行處理序間通訊一)

來源:互聯網
上載者:User

標籤:時鐘   忽略   相關   comm   中斷   使用   鬧鐘   tty   sig   

各位看官們,大家好,上一回中咱們說的是處理序間通訊的範例。這一回咱們說的範例是:使用訊號進行處理序間通訊。閑話休提,言歸正轉。

讓我們一起talk C栗子吧!

我們在上一回中提到過進程之間通訊須要解決的三個問題,時間不長。我想大家都記得。今天我們就來解決第一個問題:進程之間怎樣進行通訊

訊號的概念

在解決這個問題前。我們先介紹一下訊號。訊號是Unix/Linux系統提供的一種機制,它本質上一種軟體中斷

訊號為我們提供了一種非同步事件處理方法。當進程收到訊號時就會採取某種操作。比如,當進程收到終止訊號(SIGKILL)時就會終止進程。這點我們在介紹進程結束時做過相關的說明。

系統為訊號定義了名字,我們能夠通過名字來使用訊號,訊號名字是以SIG開頭的字串。比方。SIGKILL,SIGINT等。

訊號的產生

要使用訊號進行進程間的通訊,首先須要產生訊號,訊號能夠通過以下幾種方式來產生:

  • 1.使用者使用終端按鍵時發出訊號。

    比方按下ctrl+c會發出中斷訊號:SIGINT;

  • 2.硬體有異常時會發出訊號。比方使用無效的記憶體;
  • 3.軟體符合某種條件時會發出訊號。比方鬧鐘時鐘逾時後會發出SIGALRM訊號。
  • 4.使用kill命令主動發送訊號;
訊號的處理

進程收到訊號後會做對應的處理,詳細有以下幾種處理方式:

  • 1.忽略訊號。該處理方式就是收到訊號後什麼也不做,自己總在歇息;
  • 2.執行系統對訊號定義的預設動作。

    該處理方式就是收到訊號後把它交給系統去處理,自己在一邊歇息;

  • 3.捕捉訊號。這樣的處理方式就是收到訊號後做一些相關的處理,至於做什麼處理,須要使用者去實現。

明確訊號的這些知識後,我們就正式開始介紹使用訊號這樣的方式進行通訊。

我們舉一個簡單的範例進行說明。

編譯以下的程式而且執行:

int main{    int i = 0;    while(i++ < 9999)    {        printf("i have been sleeping for %d second \n",i);        sleep(1);    }    return 0;}

以下是程式的執行結果。請大家參考:

./s                                  //在終端中執行編譯後的程式i have been sleeping for 1 second    //程式在執行,而且輸出執行結果i have been sleeping for 2 second i have been sleeping for 3 second i have been sleeping for 4 second i have been sleeping for 5 second i have been sleeping for 6 second i have been sleeping for 7 second i have been sleeping for 8 second i have been sleeping for 9 second i have been sleeping for 10 second ^C                                   //在終端中按下ctrl+c終止程式執行

通過上面的程式, 我們分析一下程式中進程通訊的原理

  • 把在終端中執行的程式當作進行A,終端本身當作進程B。
  • 在進行B中通過按鍵給進程 A發送SIGINT訊號。
  • 進程B收到該訊號後做出了響應:停止執行。我們在進程B中能夠看到進程A停止了執行。

看官們。我們後面的章回中還會舉其他進程之間通訊的範例,以便讓大家對使用訊號進行進程之間通訊有更加深入的瞭解。

各位看官。關於使用訊號進行處理序間通訊的範例咱們就講到這裡。欲知後面還有什麼範例,且聽下回分解 。

一起talk C栗子吧(第八十四回:C語言執行個體--使用訊號進行處理序間通訊一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.