IPC-進(jìn)程間通信介紹
IPC:InterProcess Communication,進(jìn)程將通信桃序,通過內(nèi)核提供的緩沖區(qū)進(jìn)行數(shù)據(jù)交換。
Linux環(huán)境下躁劣,進(jìn)程地址空間相互獨立晃琳,每隔進(jìn)程各自有不同的用戶地址空間。任何一個進(jìn)程的變量在另一個進(jìn)程中是看不到的姆涩,所以進(jìn)程和進(jìn)程之間不能相互訪問挽拂,要數(shù)據(jù)交換,必須通過內(nèi)核骨饿,在內(nèi)核中開辟一塊緩沖區(qū)亏栈,在進(jìn)程1把數(shù)據(jù)從用戶空間拷貝到內(nèi)核緩沖區(qū)台腥,進(jìn)程2再從內(nèi)核緩沖區(qū)中讀走數(shù)據(jù)。
TIM截圖20190517150511.png
IPC通信方式:
pipe 管道
fifo 有名管道
mmap 文件映射IO绒北,共享IO 速度最快黎侈,
本地 socket 最穩(wěn)定
信號 攜帶信息連最小
共享內(nèi)存 在內(nèi)存開辟一塊緩沖去各個進(jìn)程都可以直接使用。
消息隊列
現(xiàn)在比較常用的進(jìn)程通信方式有:管道(簡單)镇饮、信號(開銷小)蜓竹、mmap(無血緣關(guān)系)、本地套接字(穩(wěn)定)