linux 程序通訊 訊號學習總結(1)

2021-05-10 20:48:52 字數 730 閱讀 1943

liux 下程序通訊有訊號、管道和system v 的ipc的三種通訊方式:訊號量、訊息佇列以及共享記憶體。

訊號在linux通訊方式中是一種最簡單的通訊方式,它只傳送簡單的資料,實際上是一種非同步軟中斷的通訊方式。linux的訊號有很多,其中最常用的有sigkill、sigalrm、sigstop、sigchld、sigusr1、sigusr2等。

對訊號的處理方式有三種:忽略訊號、使用系統預設的處理方式、使用自定義的函式進行處理,其中最後一種需要自定義乙個函式,並使用函式signal來指定訊號由訪函式來處理。signal函式原型為:

typedef void (*sighandler)(int);

sighandler signal(int signum,sighandler handler);

其中引數signum為訊號值,而handler為對訊號進行處理的函式。現舉乙個使用訊號進行通訊的例子。

#include "stdio.h"

#include "sys/types.h"

#include "unistd.h"

#include "signal.h"

void sigint(int signum)

int main()

將該源程式編譯執行後,在2s內按下ctrl+c,即可輸出:capture sigint

此外在使用訊號通訊時,要用到的函式主要有:kill(),pause(),alram(),setitimer,getitimer等等。

Linux程序通訊 訊號通訊

訊號 signal 機制是unix系統中最為古老的程序間通訊機制,很多條件可以產生乙個訊號 1 當使用者按某些按鍵時,產生訊號 2 硬體異常產生訊號 除數為0 無效的儲存訪問等等。這些情況通常由硬體檢測到,將其通知核心,然後核心產生適當的訊號通知程序,例如 核心對正訪問乙個無效儲存區的程序產生乙個s...

Linux程序通訊 訊號

1.程序 在介紹訊號的概念之前,先簡單的介紹一下程序的概念 程序可以理解為一段正在執行的程式,它包括以下三個部分內容 1 一段正在執行的程式 2 與該段程式相關聯的全部資料 資料空間,記憶體,緩衝區 3 程式計數器 pc 2.訊號 可以這麼理解訊號,訊號本身不是訊息,它表達的內容才是訊息。linux...

Linux 程序通訊 訊號

linux 程序通訊 訊號 模擬 乙個程序收到訊號與乙個處理器收到乙個中斷請求可以說一樣的,訊號是非同步的,乙個程序不必通過任何操作來等待訊號的到達,事實上,程序也不知道訊號是什麼時候到達。常見訊號 sighup 從終端發出的訊號 sigint 來自鍵盤中斷訊號 sigkill 訊號結束接受訊號程序...