Linux 多工程式設計——程序間通訊概述
程序是一個獨立的資源分配單元,不同程序(這裡所說的程序通常指的是使用者程序)之間的資源是獨立的,沒有關聯,不能在一個程序中直接訪問另一個程序的資源(例如開啟的檔案描述符)。
但是,程序不是孤立的,不同的程序需要進行資訊的互動和狀態的傳遞等,因此需要程序間通訊( IPC:Inter Processes Communication )。
程序間通訊的目的:
資料傳輸:一個程序需要將它的資料傳送給另一個程序。
通知事件:一個程序需要向另一個或一組程序傳送訊息,通知它(它們)發生了某種事件(如程序終止時要通知父程序)。
資源共享:多個程序之間共享同樣的資源。為了做到這一點,需要核心提供互斥和同步機制。
程序控制:有些程序希望完全控制另一個程序的執行(如 Debug 程序),此時控制程序希望能夠攔截另一個程序的所有陷入和異常,並能夠及時知道它的狀態改變。
Linux 作業系統支援的主要程序間通訊的通訊機制:
---------------------
作者:Mike__Jiang
來源:CSDN
原文:https://blog.csdn.net/tennysonsky/article/details/46009361
版權宣告:本文為博主原創文章,轉載請附上博文連結!
相關推薦
Linux 多工程式設計——程序間通訊概述
程序是一個獨立的資源分配單元,不同程序(這裡所說的程序通常指的是使用者程序)之間的資源是獨立的,沒有關聯,不能在一個程序中直接訪問另一個程序的資源(例如開啟的檔案描述符)。 但是,程序不是孤立的,不同的程序需要進行資訊的互動和狀態的傳遞等,因此需要程序間通訊( IPC:Inter Process
Linux 多工程式設計——程序間通訊:無名管道(PIPE)
管道的概述 管道也叫無名管道,它是是 UNIX 系統 IPC(程序間通訊) 的最古老形式,所有的 UNIX 系統都支援這種通訊機制。 無名管道有如下特點: 1、半雙工,資料在同一時刻只能在一個方向上流動。 2、資料只能從管道的一端寫入,從另一端讀出。 3、寫入管道中的資料遵循先入先出
Linux 多工程式設計——程序間通訊:訊號中斷處理
什麼是訊號? 訊號是 Linux 程序間通訊的最古老的方式。訊號是軟體中斷,它是在軟體層次上對中斷機制的一種模擬,是一種非同步通訊的方式 。訊號可以導致一個正在執行的程序被另一個正在執行的非同步程序中斷,轉而處理某一個突發事件。 “中斷”在我們生活中經常遇到,譬如,我正在房間裡打遊戲,
Linux 多工程式設計——程序間通訊:訊息佇列(Message Queues)
概述 訊息佇列提供了一種在兩個不相關的程序之間傳遞資料的簡單高效的方法,其特點如下: 1)訊息佇列可以實現訊息的隨機查詢。訊息不一定要以先進先出的次序讀取,程式設計時可以按訊息的型別讀取。 2)訊息佇列允許一個或多個程序向它寫入或者讀取訊息。 3)與無名管道、命名管道一
Linux系統程式設計——程序間通訊概述
程序是一個獨立的資源分配單元,不同程序(這裡所說的程序通常指的是使用者程序)之間的資源是獨立的,沒有關聯,不能在一個程序中直接訪問另一個程序的資源(例如開啟的檔案描述符)。 但是,程序不是孤立的,不同的程序需要進行資訊的互動和狀態的傳遞等,因此需要程序間通訊( IPC:Inter Pr
Linux 多工程式設計——程序替換:exec 函式族
在 Windows 平臺下,我們可以通過雙擊執行可執行程式,讓這個可執行程式成為一個程序;而在 Linux 平臺,我們可以通過 ./ 執行,讓一個可執行程式成為一個程序。 但是,如果我們本來就執行著一個程式(程序),我們如何在這個程序內部啟動一個外部程式,由核心將這個外部程式讀入記憶體
Linux 多工程式設計——程序的介紹
程序 我們平時寫的 C 語言程式碼,通過編譯器編譯,最終它會成為一個可執行程式,當這個可執行程式執行起來後(沒有結束之前),它就成為了一個程序。 程式是存放在儲存介質上的一個可執行檔案,而程序是程式執行的過程。程序的狀態是變化的,其包括程序的建立、排程和消亡。程式是靜態的,程序是動態的。
Linux 系統應用程式設計——程序間通訊(下)
在前面,我們學習了傳統的程序間通訊方式——無名管道(pipe)、有名管道(fifo)和訊號(signal)。 下面我們來學習 System V IPC 物件: 1、共享記憶體(share memory); 2、訊號燈(semaohore);
Linux 系統應用程式設計——程序間通訊(上)
現在再Linux應用較多的程序間通訊方式主要有以下幾種: 1)無名管道(pipe)及有名管道(fifo):無名管道可用於具有親緣關係程序間的通訊;有名管道除具有管道相似的功能外,它還允許無親緣關係程序使用; 2)訊號(signal):訊號是在軟體層次上對中斷機
Linux 多工程式設計——特殊程序:殭屍程序、孤兒程序、守護程序
殭屍程序(Zombie Process) 程序已執行結束,但程序的佔用的資源未被回收,這樣的程序稱為殭屍程序。 在每個程序退出的時候,核心釋放該程序所有的資源、包括開啟的檔案、佔用的記憶體等。 但是仍然為其保留一定的資訊,這些資訊主要主要指程序控制塊的資訊(包括程序號、退出狀態、執行時
Linux 多工程式設計——多程序控制:結束程序、等待程序結束
結束程序 首先,我們回顧一下 C 語言中 continue, break, return 的作用: continue: 結束本次迴圈 break: 跳出整個迴圈,或跳出 switch() 語句 return: 結束當前函式 而我們可以通過 exit() 或 _exit() 來結束當前
Linux 多工程式設計——多程序建立:fork() 和vfork() 函式詳解
一、fork() 函式詳解 需要的標頭檔案: #include <sys/types.h> #include <unistd.h> pid_t fork(void); 功能: 用於從一個已存在的程序中建立一個新程序,新程序稱為子程序,原程序稱為父程序。
Visual C++網路程式設計經典案例詳解 第3章 多執行緒與非同步套接字程式設計 程序間通訊 命名管道 命名管道例項
vc新增控制檯工程 名字命名管道例項 新增原始檔 名字 伺服器 #include<windows.h> //包含標頭檔案 #include<stdio.h> int main() {
Linux系統程式設計——程序間通訊:共享記憶體
概述 共享記憶體是程序間通訊中最簡單的方式之一。共享記憶體允許兩個或更多程序訪問同一塊記憶體,就如同 malloc() 函式向不同程序返回了指向同一個實體記憶體區域的指標。當一個程序改變了這塊地址中的內容的時候,其它程序都會察覺到這個更改。 共享記憶體的特點: 1)共
Linux系統程式設計——程序間通訊:訊息佇列
概述 訊息佇列提供了一種在兩個不相關的程序之間傳遞資料的簡單高效的方法,其特點如下: 1)訊息佇列可以實現訊息的隨機查詢。訊息不一定要以先進先出的次序讀取,程式設計時可以按訊息的型別讀取。 2)訊息佇列允許一個或多個程序向它寫入或者讀取訊息。 3)與無名管道、命名管道一
Linux系統程式設計——程序間通訊:管道(pipe)
管道的概述 管道也叫無名管道,它是是 UNIX 系統 IPC(程序間通訊) 的最古老形式,所有的 UNIX 系統都支援這種通訊機制。 無名管道有如下特點: 1、半雙工,資料在同一時刻只能在一個方向上流動。 2、資料只能從管道的一端寫入,從另一端讀出。
Linux系統程式設計——程序間通訊:訊號中斷處理
什麼是訊號? 訊號是 Linux 程序間通訊的最古老的方式。訊號是軟體中斷,它是在軟體層次上對中斷機制的一種模擬,是一種非同步通訊的方式 。訊號可以導致一個正在執行的程序被另一個正在執行的非同步程序中斷,轉而處理某一個突發事件。 “中斷”在我們生活中經常遇到,譬如,我正在
Linux 多工程式設計——多程序:vfork() 函式詳解
所需標頭檔案: #include <sys/types.h> #include <unistd.h> pid_t vfork(void); 功能: vfork() 函式和 fork() 函式(fork()如何使用,請點此連結)一樣都是在已有的
Linux多工程式設計(六)---編寫多程序程式及其程式碼
實驗目的 通過編寫多程序程式,熟練掌握fork()、exec()、wait()和waitpid()等函式的使用,進一步理解在Linux中多程序程式設計的步驟。 實驗內容 該實驗有3個程序,其中一個為父程序,其餘兩個是該父程序建立的子程序,其中一個子程序執行“ls
Linux多工程式設計(七)---Linux守護程序及其基礎實驗
守護程序概述 守護程序,又叫daemon程序(不知怎的,我突然想起來吸血鬼日記中的達蒙了,很好看的美劇),是Linux中的後臺服務程序。他是一個生存期較長的程序,通常獨立於控制終端並且週期性地執行某種任務或者等待處理某些發生的事件。守護程序常常在系統引導載入時啟動,在