從初識Linux到離不開系列(末)程序間通訊

2021-07-10 05:21:51 字數 1551 閱讀 5630

這原本是一本書的內容

由於其中的大部分內容需要實踐來實現,我把理論壓縮成一篇部落格,諸多沒介紹的細節還望大家見諒。

posix ipc

posix ipc由 posix訊息佇列、posix訊號量、posix共享記憶體區構成。

ipc的函式

訊息佇列 |訊號量 |共享記憶體區

管道和fifo

管道應該是一種比較簡單的訊息傳遞的方法,命令列中也有管道的說法,是用來篩選的 例如 :」|」。

管道雖然功能強大,但是只能適用於有共同父親程序的各個子程序之間。

fifo是半雙工,fifo可以和路徑名關聯,可以幫助無親緣關係的程序訪問同乙個管道。

屬於相輔相成。

訊息佇列

訊息佇列是乙個訊息的鍊錶,有足夠寫許可權的執行緒可以往佇列裡放訊息,有足夠讀許可權的執行緒可以從佇列裡取出訊息。

posix訊息佇列和system v訊息佇列的差別是

1、前者 讀 總是返回最高優先順序最早的訊息,後者 返回 任意指定優先順序

2、往空佇列裡放訊息時,前者允許產生乙個訊號或啟動執行緒,後者無

3、前者 乙個無符號整數優先順序 後者 乙個長整數型別

mq_open mq_close mq_unlink函式

每個訊息佇列有四個屬性

mq_getattr 返回這些屬性 mq_setattr設定某個屬性

mq_send和mq_receive函式

往佇列裡放訊息、讀訊息

同步和互斥量

這相當於pv操作,也就是生產者-消費者問題

涉及到互斥鎖、讀寫鎖

posix訊號量

同樣是為了解決生產者-消費者問題。

sem_open sem _close sem_unlink函式

涉及到緩衝區,程序間共享訊號量

system v訊號量

semget函式

建立乙個訊號量集或訪問乙個已存在的訊號量集

semop函式

對乙個或多個訊號量的操作

semctl函式

對訊號量進行操作

posix共享記憶體區

shm_open函式

建立共享記憶體區或開啟乙個已存在的

shm_unlink函式

ftruncate函式

修改普通檔案或共享記憶體區物件的大小,處理mmap時

fstat函式

獲取共享記憶體區物件資訊

system v共享記憶體區

shmget函式

建立乙個新的共享記憶體區或訪問乙個已存在的

shmat函式

斷開共享記憶體區

shmctl函式

對共享記憶體區的操作

這也算是一次簡單的旅程吧,從開始的邂逅到現在的了解,以後還將繼續合作下去。。。可以做到半永不完結了

從初識Linux到離不開系列(一)知難而進

起初讓我用linux,我是拒絕的,因為太難用了,光是安裝就看崩了。但是如果因此而退卻,豈不是太沒骨氣了?於是便踏上了漫漫長路!安裝篇 在win 8.1環境下進行ubuntu系統的安裝,首先遇到的問題是ubuntu分割槽,我採用簡單的兩個分割槽的方式解決,即swap交換分割槽和主分割槽,這種方式簡單不...

從社群到粉絲,生活離不開它們的變化

從社群到粉絲,生活離不開它們的變化 從古至今,中國的商業形態和模式不知道經歷了多少次的更迭,但其本質的內容和商業精神卻是一直延續至今的,因此不管是網際網路時代還是移動網際網路時代,它們只是在遵循了其內在的發展規則後而衍生出的產物罷了 解密社群粉絲經濟 商業的本質 商業的本質就是流通,通過資訊 商品以...

Linux從入門到精通系列之DHCP

linux從入門到精通系列之dhcp 首先呢先講下dhcp的簡介 對於那些不太了解網路技術的人來說,配置tcp ip可能是一件非常複雜的工作,對那些將pc連線到區域網的使用者來說只能將配置集中到伺服器端,這樣可以簡化使用者端的工作複雜度。當然,這將在一定程度上,增加管理員的工作量,但是從整體考慮,這...