1.linux
程序間通訊的目的?
資料傳輸:乙個程序需要將他的資料傳送給另乙個程序,傳送的資料量在乙個位元組到幾兆位元組之間;
共享資料:多個程序想要共享資料,乙個程序對共享資料的修改,別的程序應該立刻看到;
通知事件:乙個程序需要向另乙個或一組程序傳送訊息,通知它發生了某種事件(如程序終止前要通知父程序);
資源共享
:多個程序之間共享同樣的資源。為了做到這一點,需要核心提供鎖和同步機制;
程序控制
:有些程序希望完全控制另乙個程序的執行,此時控制程序希望能夠攔截另乙個程序的所有資訊和異常,並能夠及時知道它的狀態。
2.linux
下程序間通訊的幾種主要方式?
管道和有名管道;
訊號;訊息佇列;共享記憶體;訊號量;套接字。 3.
無名管道與有名管道的優缺點
管道用於具有親緣關係的程序間通訊,使用者自己建立管道,並完成讀寫操作
fifo
可以說是管道的推廣,克服了無名管道的克制,使得無親緣關係的程序同樣可以採用先進先出的通訊機制進行通訊 4.
從管道中怎樣讀取資料?
如果管道的寫端不存在,則認為已經讀到了資料的末尾,讀函式返回的讀出位元組數為0;
當管道的寫端存在時,如果請求的位元組數目大於
pipe_buf
,則返回管道中現有的資料位元組數,如果請求的位元組數目不大於
pipe_buf
,則返回管道中現有資料位元組數,或者返回請求的位元組數。
管道寫端關閉後,寫入的資料將一直存在,直到讀出為止。 5.
怎樣從管道中寫入資料?
向管道中寫入資料,
linux
將不保證寫管道寫入資料。如果讀程序不讀走管道緩衝區的資料,那麼寫操作將一直阻塞。只有當管道的讀端存在時,向管道中寫入資料才有意義。 6.
為什麼讀寫有名
管道,要設定阻塞標誌
對於阻塞寫來說,寫操作在寫滿
fifo
的空閒區域後,會一直等待,直到寫完所有資料為止,請求寫入的資料的最終都會寫入
fifo
7.有名管道與訊息佇列的區別是什麼
訊息佇列:用於訊息,不是簡單的資料資訊傳遞,訊息佇列還包括訊息有優先順序,訊息到達通知等;
管道:低階的通訊機制,訊息佇列比管道高階,無名管道和有名管道依然比較低階,完成高階的應用伺服器還需要訊息佇列等.
8.訊號的本質是什麼?
訊號實在軟體層次上對中斷機制的一種模擬,在原理上,乙個程序收到乙個訊號與處理器收到乙個中斷請求可以說是一樣的。訊號是非同步的,乙個程序不必通過任何操作來等待訊號的到達,事實上,程序也不知道訊號到底什麼時候到達。 9.
傳送訊號的主要函式的作用是什麼
kill:
可以傳送訊號給訊號和程序組,它不僅可以終止程序,也可以向程序傳送其他訊號;
raise()
函式允許程序向自身傳送訊號
alarm()
可以在程序中設定定時器,等到時間到達時,就會向程序發生
sigalarm
訊號,注意的是,乙個程序只有乙個鬧鐘;
pause()
直接將訊號掛起直到捕捉到訊號為止
10.什麼是不可靠訊號。
在訊號的生命週期裡,當乙個非實時訊號傳送給乙個程序時,如果該訊號已經在程序中註冊,則該訊號將被丟棄,造成訊號丟失。因此,非實時訊號又叫做「不可靠訊號」。
Linux程序間通訊
程序間通訊 ipc interprocess communication 基本機制 訊號 管道及命名管道 訊息佇列 共享主存 訊號量 套接字。訊號 全稱軟中斷訊號,是在軟體層次上對中斷機制的一種模擬,它也是程序間通訊機制中唯一的非同步通訊機制。linux訊號處理函式可分為訊號安裝函式 訊號傳送函式和...
Linux程序間通訊
謝謝nonoob糾錯 我們在linux訊號基礎中已經說明,訊號可以看作一種粗糙的程序間通訊 ipc,interprocess communication 的方式,用以向程序封閉的記憶體空間傳遞資訊。為了讓程序間傳遞更多的資訊量,我們需要其他的程序間通訊方式。這些程序間通訊方式可以分為兩種 1.管道與...
Linux程序間通訊
謝謝nonoob糾錯 我們在linux訊號基礎中已經說明,訊號可以看作一種粗糙的程序間通訊 ipc,interprocess communication 的方式,用以向程序封閉的記憶體空間傳遞資訊。為了讓程序間傳遞更多的資訊量,我們需要其他的程序間通訊方式。這些程序間通訊方式可以分為兩種 1.管道與...