這原本是一本書的內容
由於其中的大部分內容需要實踐來實現,我把理論壓縮成一篇部落格,諸多沒介紹的細節還望大家見諒。
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連線到區域網的使用者來說只能將配置集中到伺服器端,這樣可以簡化使用者端的工作複雜度。當然,這將在一定程度上,增加管理員的工作量,但是從整體考慮,這...