一、進程間通信7種方式
1.傳統的進程間通信方式
(1)管道
①無名管道:
②有名管道:
(2)③信號
(3)system Ⅴ ===》系統Ⅴ? ?進程間通信方式? ?inner Process Comunication
- ? ? ? ? ④共享內存 (最高效的通信方式)
- ? ? ? ? ⑤消息隊列(消息都有類型? 可以選擇接收哪種類型的消息)【了解】
- ? ? ? ? ⑥信號量集(一組信號量? )【了解】
(4)⑦socket ===》套接字
? ? ? ? ? ? ? ? ? ? ?===》本地套接字 網絡套接字
前六種包括socket的本地逃跑戒子===》同一主機內進程間通信
最后一種,不同主機間進程間通信
二、管道
1.管道
無名管道 ===》沒名字(父子進程間通信)
有名管道===》有名字
- mafifo命令
2.無名管道
?int pipe(int pipefd[2]);
(1)功能:創建管道
(2)參數:
????????????????pipefd[0]:讀端
????????????????pipefd[1]:寫端
????????????????數據從寫端寫入,讀端讀出
(3)返回值
????????????????成功返回0
????????????????失敗返回-1&&errno
注意:
管道是有大小的,默認時64kB
管道的讀寫規則:管道的讀端存在,寫數據? ,有空間,可以一直寫;滿了,此時寫操作阻塞,等讀了4k之后,阻塞消失;