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命令中,執行乙個程式,後面加上 代表後台執行,也就是執行這個程式的同時,你...