Linux系統程式設計之多工程式設計 IPC 管道

2021-10-01 04:04:02 字數 1878 閱讀 7848

程序間通訊方式

一、管道

1、無名管道 pipe:適用於親緣關係程序間的、一對一的通訊

特點:

(1)管道檔案:這個檔案很特殊,其實就是一塊記憶體,不能使用open開啟,也不可以使用lseek,可以使用read write讀寫。

(2)半雙工:同一時刻只能單方向傳輸資料

(3)大小為 64k

(4)關閉讀端,能夠正常寫入資料 ,如果緩衝區已滿,那麼write會阻塞

(5)關閉寫端,讀取會阻塞

管道兩端分別用描述符fd[0]和fd[1]來描述。其中fd[0]只能用於讀,稱為管道讀端;fd[1]只能用於寫,稱為管道寫端。

無名管道的通訊方式如下**所示:

#include

#include

#include

#include

#include

intmain()

// 子程序: 將資訊從管道讀出來

if(pid ==0)

close

(fd[0]

);close

(fd[1]

);return0;

}

2、有名管道 fifo :適用於任何程序間的一對

一、多對一的通訊

特點:fifo嚴格遵循先進先出(first in first out),對管道及fifo的讀總是從開始處返回資料,對它們的寫則把資料新增到末尾。有名管道的寫端

#include

#include

#include

#include

#include

#include

#include

#include

intmain

(void

)// 關閉檔案,釋放資源

close

(fd)

;return0;

}

有名管道的讀端

#include

#include

#include

#include

#include

#include

#include

#include

intmain

(void

)printf

("收到: %s"

, buf);}

// 關閉檔案,釋放資源

close

(fd)

;return0;

}

二、訊號

訊號:非同步通訊方式(system-v ipc物件)

三、共享記憶體

共享記憶體:效率最高的通訊方式

四、訊息佇列

訊息佇列:相當於帶標籤的增強版管道

五、訊號量

訊號量組:引數複雜,功能強大到臃腫

posix有名訊號量:適用於多程序,引數簡單,介面明晰,老少咸宜

posix無名訊號量:適用於多執行緒,引數簡單,介面明晰,童叟無欺

六、套接字

套接字 socket:適用於跨網路的程序間通訊

Linux系統程式設計之檔案程式設計

目錄 一 檔案程式設計 1 linux檔案 2 檔案描述符 file descriptor 3 常用api open write read lseek close 1 open 開啟檔案函式 2 close 關閉檔案 3 write 寫檔案 4 read 讀檔案 5 lseek 游標定位 linux...

Linux系統程式設計之程序

程序狀態 4 5種 就緒 初始化 執行,掛起 等待 停止 pbc成員 1 程序id 2 程序狀態 3 程序切換需要儲存和恢復的cpu暫存器 4 描述虛擬位址空間資訊 5 描述控制終端的資訊 6 當前工作目錄 7 umask掩碼 8 檔案描述符 9 訊號相關的資訊 10 使用者和使用者組id 11 會...

Linux系統程式設計之shell script介紹

shell script 程式指令碼化 是乙個可以實現自動管理系統的好工具!它值得開發人員好好學習,基本上,shell script有點像是早期批處理的檔案,即將一些命令彙整起來一次執行,但是shell script擁有更強大的功能,因為它可以編寫不需要經過編譯就能執行的shell script程式...