程式間通訊(linux程式與執行緒學習筆記)
程式間通訊介紹
早期UNIX程式間通訊方式
無名訊號(pipe)
有名管道(fifo)
訊號(signal)
System V IPC
共享記憶體(share memory)
訊息佇列(message queue)
訊號燈集(semaphore set)
套接字(socket)
無名管道特點
無名管道具有以下特點:
只能用於具有親緣關係的程式之間的通訊
單工的通訊模式,具有固定的讀端和寫端
無名管道建立時會返回兩個檔案描述符,分別用於讀寫管道
無名管道建立 - pipe
#include<unistd.h>
int pipe(int pdf[2]);
成功時返回0,失敗時返回EOF
pdf 包含兩個元素的整形陣列,用來儲存檔案描述符
pdf[0]用於讀管道,pdf[1]用於寫管道
讀無名管道
寫端存在(至少有一個程式可以通過無名管道寫資料)
有資料 read返回實際讀取的位元組數
無資料 程式讀阻塞
寫端不存在
有資料 read返回實際讀取的位元組數
無資料 read返回0
寫無名管道
讀端存在(至少有一個程式可以通過檔案描述符讀取管道內容)
有空間 write返回實際寫入位元組數
無空間 程式寫阻塞
讀端不存在
有空間 管道斷裂!
無空間 管道斷裂!
相關文章
- Linux程式執行緒學習筆記Linux執行緒筆記
- Adnroid原始碼學習筆記:Handler 執行緒間通訊原始碼筆記執行緒
- 共享記憶體對映(linux程式與執行緒學習筆記)記憶體Linux執行緒筆記
- 3|程式間通訊--有名管道學習筆記筆記
- 《Java 多執行緒程式設計核心技術》筆記——第3章 執行緒間通訊(三)Java執行緒程式設計筆記
- 《Java 多執行緒程式設計核心技術》筆記——第3章 執行緒間通訊(四)Java執行緒程式設計筆記
- RT-Thread學習筆記3-執行緒間通訊 & 定時器thread筆記執行緒定時器
- Android程式間通訊(複習筆記)Android筆記
- Java多執行緒學習(3)執行緒同步與執行緒通訊Java執行緒
- Java多執行緒學習——執行緒通訊Java執行緒
- Java併發程式設計學習筆記----執行緒池Java程式設計筆記執行緒
- 執行緒與程式之間有什麼關係?Linux執行緒與程式有什麼區別?執行緒Linux
- Java多執行緒學習(五)執行緒間通訊知識點補充Java執行緒
- Android執行緒間通訊Android執行緒
- 程式和執行緒有什麼區別?(Process and Threads)程式之間和執行緒之間是如何通訊的?執行緒thread
- Linux 學習筆記--程式Linux筆記
- Python學習筆記 - 多執行緒Python筆記執行緒
- Java 多執行緒學習筆記Java執行緒筆記
- 程式間通訊——LINUXLinux
- Linux程式間通訊Linux
- Linux中程式與程式、執行緒的區別!Linux執行緒
- 多執行緒之間通訊及執行緒池執行緒
- java多執行緒5:執行緒間的通訊Java執行緒
- 阿里Android開發規範:程式、執行緒與訊息通訊阿里Android執行緒
- Linux程式與執行緒的區別Linux執行緒
- Linux執行緒與程式的區別Linux執行緒
- 簡述Linux 中程式與執行緒Linux執行緒
- 多執行緒Demo學習(執行緒的同步,簡單的執行緒通訊)執行緒
- Linux 學習筆記--程式管理Linux筆記
- Java併發程式設計之執行緒安全、執行緒通訊Java程式設計執行緒
- 執行緒、執行緒與程式、ULT與KLT執行緒
- 程式與執行緒執行緒
- 執行緒與程式執行緒
- Python學習筆記|Python之執行緒Python筆記執行緒
- Java多執行緒學習筆記(自用)Java執行緒筆記
- Java 併發程式設計學習筆記 05 :如何暫停執行緒?Java程式設計筆記執行緒
- Linux程式間通訊-eventfdLinux
- Linux程式間通訊之共享記憶體Linux記憶體