IPC(InterProcess Communication進(jìn)程間通信)分兩種,一種是進(jìn)程發(fā)起的,短暫的通信爽彤;一種是系統(tǒng)提供的璧诵,持續(xù)的通信。
首先要提一下妒蔚,unix C創(chuàng)建進(jìn)程的方式。使用fork函數(shù),復(fù)制當(dāng)前進(jìn)程的所有狀態(tài)甚至內(nèi)存鸥滨。
第一種IPC有兩種常見的方式。Pipe和FIFO辟宗。
1.Pipe管道爵赵。在進(jìn)程復(fù)制之前,向系統(tǒng)申請一個(gè)pipe(管道)泊脐;在進(jìn)程復(fù)制之后空幻,兩個(gè)進(jìn)程都能獲得管道的句柄,從而進(jìn)行通信容客。
2.FIFO秕铛。進(jìn)程之間通信约郁,還能通過對文件操作的方式。如果這個(gè)文件存在于內(nèi)存之中但两,效率問題自然也被解決了鬓梅。
第二種IPC被稱為System V IPC有三種常見的方式。Message Queue谨湘,Semaphore和Shared Memory绽快。
3.Message Queue消息隊(duì)列。一個(gè)進(jìn)程向系統(tǒng)的消息隊(duì)列存放數(shù)據(jù)紧阔,其他進(jìn)程獲取這些數(shù)據(jù)坊罢。
4.Semaphore信號量。多個(gè)進(jìn)程監(jiān)聽一個(gè)信號量時(shí)擅耽,當(dāng)一個(gè)信號量被釋放后某個(gè)獲得信號量的進(jìn)程將被激活活孩,監(jiān)聽中的進(jìn)程則繼續(xù)等待信號量被其他進(jìn)程釋放。
5.Shared Memory共享存儲乖仇。一個(gè)進(jìn)程向系統(tǒng)申請一片共享存儲的空間憾儒,當(dāng)有的進(jìn)程獲得共享存儲空間的句柄,則可以通過句柄使用那一段空間乃沙。