Linux C程序間通訊(預習內容四)

2021-07-22 23:19:37 字數 1518 閱讀 2913

訊號型別:

常見的訊號:

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 建立新的訊息佇列。建立 在以下兩種情況下,...