linux 程序通訊

2021-08-11 14:39:59 字數 1849 閱讀 3088

1.linux程序間通訊的目的是什麼?

1.資料傳輸,乙個程序將它的資料傳送給另乙個程序,傳送的資料量在乙個位元組到幾兆位元組之間。

2.共享資料,多個程序想要操作共享資料,乙個程序對共享資料的修改,別的程序立刻看到。

3.通知事件,乙個程序通知另乙個或一組程序發生了某件事。

4.資源共享,多個程序之間共享同樣的資源。需要核心提供鎖和同步機制。

5.程序控制,有些程序希望完全控制另乙個程序的執行,控制程序希望能夠攔截另乙個程序的資訊和異常。

2.何為管道?

管道是程序間通訊中最古老的方式,它包括

無名管道

和有名管道

兩種,前者用於父程序和子程序間的通訊,後者用於執行於同一臺機器上的任意兩個程序間的通訊。

3.管道通訊的特點是什麼

1.管道是半雙工的,資料只能向乙個方向流動,需要雙方通訊時,需要建立兩個管道。

2.只能同於父子程序或兄弟程序之間

3.單獨構成一種檔案系統,管道對於兩端的程序而言,就是乙個檔案,但他不是普通的檔案,不屬於某種檔案系統,而是自立門戶,並且只存在於記憶體中。

4.資料的讀入和寫入,乙個程序寫的內容被另一端的程序讀出,寫入的內容每次都新增在管道緩衝區的末尾,並且每次都是從快取區的頭部讀出資料。

4.有名管道與普通管道的區別優缺點

管道只能用於具有親緣關係的程序間通訊,在有名管道提出後,該限制可以突破,fifo

不同於管道之處在於,它提供乙個路徑名與之關聯,以

fifo

的檔案形式存在於檔案系統中,這樣,即使與

fifo

的建立程序不存在血緣關係的程序,只要可以訪問該路勁,就能彼此通過

fifo

相互通訊,因此,不相關的程序也能通過

fifo

互動資料,

fifo

嚴格遵循先進先出,對管道及

fifo

的讀總是從開始處返回資料的,對它們的寫則把資料新增到末尾,不支援

lseek

等檔案定位操作。

5..訊息佇列與管道、有名管道相比的優缺點

訊息佇列具有更大的靈活性,首先它提供格式位元組流,有利於減少開發人員的工作量,其次訊息具有型別,在實際應用中,可以作為優先順序使用,這兩點是管道和有名管道所不能比的。同樣,訊息佇列可以在幾個程序間復用,而不管這幾個程序是否具有血緣關係,這一點與有名管道相似,但訊息佇列是隨核心持續的,與有名管道相比(隨程序持續),生命力更強,應用空間更大。

6.訊號燈與其他通訊方式的不同之處

訊號燈主要提供對程序間共享資源訪問控制機制,相當於記憶體中的標誌,程序可以根據它判斷是否能夠訪問某些共享資源,同時,程序也可以修改該標誌,除了用於訪問控制外,還可以用於程序同步。

7.什麼叫共享記憶體

共享記憶體是最有用的程序間通訊方式,也是最快的ipc

形式,兩個不同程序a、

b共享記憶體的意思是,同一塊物理記憶體被對映到程序

a,b個字的程序位址空間,程序

a可以即時看到程序

b對共享記憶體中資料的更新,反之亦然,由於多個程序共享同一塊記憶體區域,必須要某種同步機制,互斥鎖和訊號量都可以

8. 通道常用於哪些方面?

在shell中時常會用到管道(作為輸入輸出的重定向),在這種應用方式下,管道的建立對於使用者來說是透明的。

用於具有親緣關係的程序間通訊,使用者自己建立管道,並完成讀寫操作。

9. 訊號的本質是什麼?

訊號實在軟體層次上對中斷機制的一種模擬,在原理上,乙個程序收到乙個訊號與處理器收到乙個中斷請求可以說是一樣的。訊號是非同步的,乙個程序不必通過任何操作來等待訊號的到達,事實上,程序也不知道訊號到底什麼時候到達。

10. 訊號**是什麼?

硬體**(按下鍵盤或其他硬體故障);

軟體**與一些非法運算等操作。

Linux程序通訊

linux程序通訊 無名管道主要用於有親緣關係的程序通訊,其位於外存區域,但在檔案系統中不可見。在實際應用中,程序通訊往往發生在無關程序之間,此種情形下,若仍想使用管道,則必須使用有名管道,也稱命名管道或fifo檔案。這種型別的管道在檔案系統中可見,建立時需要指定具體路徑和檔名,管道建立之後,可用l...

Linux 程序通訊

程序通訊 通訊 communication 意味著在程序間傳送資料。也把程序間控制資訊的交換稱為低階通訊,而把程序間大批量資料的交換稱為高階通訊。程序通訊的型別 1 共享儲存器系統 記憶體 共享儲存器系統為了傳送大量資料,在儲存器中劃出一塊共享儲存區,諸程序可通過對共享儲存區進行讀資料或寫資料以實現...

Linux 程序通訊

linux下程序通訊的八種方法 管道 pipe 命名管道 fifo 共享記憶體 shared memory 訊息佇列 message queue 訊號量 semaphore 訊號 signal 套接字 socket linux命令中,執行乙個程式,後面加上 代表後台執行,也就是執行這個程式的同時,你...