進程間通信
一 進程間通信 -- 管道
- mkfifo test 創(chuàng)建管道文件
- 匿名管道和命名管道:
- 匿名管道:匿名管道主要利用了郑什,創(chuàng)建子進程的時候會把父進程的文件描述符表拷貝一份這個特征猖凛,通過這個特征删掀,父子進程就看到了一個公共的資源—管道,并同時擁有對該管道腹瀉的權(quán)利毅糟,那么一方讀怠堪,一方寫腰池,就可以完成進程之間的通信了。
- 命名管道:既然管道也是一個文件壤追,那么肯定有大小上限磕道,這也是其一個缺點,大小有限的
二 消息隊列
管道是一個文件行冰,而消息隊列是一個數(shù)據(jù)結(jié)構(gòu)
ipcs -q #查看消息隊列狀態(tài)
ipcrm -q 21323 #銷毀
三 信號量
-
信號量用于進程間的同步和互斥
- 同步:處理競爭,安排進程執(zhí)行的順序
- 互斥:互斥訪問不可共享資源
- 競爭:并發(fā)進程競爭使用同一個資源時
信號量的創(chuàng)建:
信號量的初始化
-
信號量操作:
- P操作
- V操作
信號量的刪除
四 共享內(nèi)存
- 創(chuàng)建共享存儲區(qū):
ipcs -m #查看當前的共享存儲區(qū) - 共享存儲區(qū)的鏈接
- 共享存儲區(qū)的斷開
- 刪除共享存儲區(qū)
五 信號
-
信號是怎么產(chǎn)生的:
- 硬件產(chǎn)生的
- 進程發(fā)送的
- 異常
- kill -l #查看所有的信號
-
信號處理的方式:
- 忽略
- 默認處理
- 自定義處理
相關(guān)函數(shù)解析:
阻塞信號