訊號型別:常見的訊號:
sighup:從終端上傳送的結束訊號
sigint:來自鍵盤的中斷訊號(ctrl + c)
sigkill:該訊號結束結束訊號的程序
sigterm:kill命令發出的訊號
sigchld:標示子程序停止或結束的訊號
sigstop:來自鍵盤(ctrl + z)或除錯程式的停止執行訊號
訊號處理:
當訊號出現時,將按照下列三種方式中的一種進行處理:
1.忽略此訊號
大多數訊號都按照這種方式進行處理,但有兩張訊號卻決不能被忽略,它們是:sigkill\sigstop。這兩種訊號不能被忽略的原因是:它們向超級使用者提供了一種終止或停止程序的方法。
2.執行使用者希望的動作
通知核心在某種訊號發生時,呼叫乙個使用者函式。在使用者函式中,執行使用者希望的處理。
3.執行系統預設動作
對大多數訊號的系統預設動作是終止該程序。
訊號傳送:
傳送訊號的主要函式有kill和raise。
區別:
kill既可以向自身傳送訊號,也可以向其他程序傳送訊號。與kill函式不同的是,raise函式是向程序自身傳送訊號。
#include
#include
int kill(pid_t pid,int signo);
int raise(int signo);
訊號傳送:
kill的pid引數有四種不同的情況:
1.pid>0
將訊號傳送給程序id為pid的程序。
2.pid == 0
將訊號傳送給同組的程序。
3.pid < 0
將訊號傳送給其他程序組id等於pid絕對值的程序。
4.pid == -1
將訊號傳送給所有程序。
Linux C通訊間程序(預習內容二)
現在linux使用的程序間通訊方式包括 1.管道 pipe 和有名管道 fifo 2.訊號 signal 3.訊息佇列 4.共享記憶體 5.訊號量 6.套接字 socket 管道通訊 管道是單向的 先進先出的,它把乙個程序的輸出和另乙個程序的輸入連線在一起。乙個程序 寫程序 在管道的尾部寫入資料,另...
Linux C程序間通訊(預習內容六)
共享記憶體 是被多個程序共享的一部分物理記憶體。共享記憶體是程序間共享資料的一種最快的方法,乙個程序向共享記憶體區域寫入了資料,共享這個記憶體區域的所有程序就可以立刻看到其中的內容。共享記憶體實現分為兩個步驟 一 建立共享記憶體,使用shmget函式。二 對映共享記憶體,將這段建立的共享記憶體對映到...
Linux C程序間通訊(預習內容八)
開啟 建立 include include include int msgget key t key,int msg 返回乙個msgget 的id key 鍵值,由ftok獲得。msg 標誌位。返回值 與健值key相對應的訊息佇列描述字。ipc creat 建立新的訊息佇列。建立 在以下兩種情況下,...