導航:首頁 > 操作系統 > linux發送信息

linux發送信息

發布時間:2025-09-25 12:07:50

A. linux進程間通信的方式有哪些

第一種:管道通信
兩個進程利用管道進行通信時,發送信息的進程稱為寫進程;接收信息的進程稱為讀進程。管道通信方式的中間介質就是文件,通常稱這種文件為管道文件,它就像管道一樣將一個寫進程和一個讀進程連接在一起,實現兩個進程之間的通信。寫進程通過寫入端往管道文件中寫入信息;讀進程通過讀出端從管道文件中讀取信息。兩個進程協調不斷地進行寫和讀,便會構成雙方通過管道傳遞信息的流水線。
第二種:消息緩沖通信
多個獨立的進程之間可以通過消息緩沖機制來相互通信。這種通信的實現是以消息緩沖區為中間介質,通信雙方的發送和接收操作均以消息為單位。在存儲器中,消息緩沖區被組織成隊列,通常稱之為消息隊列。消息隊列一旦創建後即可由多進程共享,發送消息的進程可以在任意時刻發送任意個消息到指定的消息隊列上,並檢查是否有接收進程在等待它所發送的消息。若有則喚醒它,而接收消息的進程可以在需要消息的時候到指定的消息隊列上獲取消息,如果消息還沒有到來,則轉入睡眠等待狀態。
第三種:共享內存通信
針對消息緩沖需要佔用CPU進行消息復制的缺點,OS提供了一種進程間直接進行數據交換的通信方式。共享內存,顧名思義這種通信方式允許多個進程在外部通信協議或同步,互斥機制的支持下使用同一個內存段進行通信,它是一種最有效的數據通信方式,其特點是沒有中間環節,直接將共享的內存頁面通過附接映射到相互通信的進程各自的虛擬地址空間中,從而使多個進程可以直接訪問同一個物理內存頁面。

B. linux系統上信號發送和信號接收講解

用於進程間通信,通信機制由操作系統保證,比較穩定。

在linux中可以通過kill -l查看所有信號的類型。

kill -信號類型 進程ID

int kill(pid_t pid, int sig);
入參pid :
pid > 0: 發送信號給指定的進程。
pid = 0: 發送信號給 與調用kill函數進程屬於同一進程組的所有進程。
pid < 0: 取|pid|發給對應進程組。
pid = -1:發送給進程有許可權發送的系統中所有進程。
sig :信號類型。
返回值 :成功:0;失敗:-1 (ID非法,信號非法,普通用戶殺init進程等權級問題),設置errno
以OpenHarmony源碼為例,應用ANR後,AbilityManagerService會通知應用mp堆棧信息,就是通過信號量做的。

頭文件位置 :
include <signal.h>
函數解釋 :
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
當接收到指定的信號signum時,就會跳轉到參數handler指定的函數執行。其中handler的入參是信號值。

函數原型

signum參數指出要捕獲的信號類型,act參數指定新的信號處理方式,oldact參數輸出先前信號的處理方式(如果不為NULL的話)。
sigaction結構體

sa_handler 信號處理函數
sa_mask 在處理該信號時可以暫時將sa_mask 指定的信號集擱置
sa_flags 指定一組修改信號行為的標志。 它由以下零個或多個的按位或組成
   SA_RESETHAND:當調用信號處理函數時,將信號的處理函數重置為預設值SIG_DFL
   SA_RESTART:如果信號中斷了進程的某個系統調用,則系統自動啟動該系統調用
   SA_NODEFER :一般情況下, 當信號處理函數運行時,內核將阻塞該給定信號。但是如果設置了 SA_NODEFER標記, 那麼在該信號處理函數運行時,內核將不會阻塞該信號
sa_restorer 是一個替代的信號處理程序,當設置SA_SIGINFO時才會用它。
相關函數
int sigemptyset( sigset_t *set);
sigemptyset()用來將參數set信號集初始化並清空。
執行成功則返回0,如果有錯誤則返回-1。
完整示例

閱讀全文

與linux發送信息相關的資料

熱點內容
mc怎麼用命令塊坑隊友 瀏覽:313
for命令讀取文件 瀏覽:69
php支付安全問題 瀏覽:327
vbs編譯器手機 瀏覽:391
加密門禁卡復制卡 瀏覽:267
伺服器必須配置永久IP地址 瀏覽:936
活塞式製冷壓縮機拆裝 瀏覽:810
linuxlvs安裝 瀏覽:315
解壓照片降低分辨 瀏覽:389
詩集pdf 瀏覽:772
程序員的工資都去了哪裡 瀏覽:267
xr關閉應用加密 瀏覽:14
金立w900無命令 瀏覽:707
linux發送信息 瀏覽:950
步進電機單片機 瀏覽:35
linuxselect編程 瀏覽:974
php推送百萬用戶消息 瀏覽:961
老年人適合學會的編程 瀏覽:511
app底部的技術支持字眼如何寫 瀏覽:557
伺服器主板都是什麼介面 瀏覽:955