UNIX 程序間通訊

2021-06-27 08:38:02 字數 1098 閱讀 7609

linux繼承了at&t和bsd以及早期的程序間的通訊

一般常用的通訊方式有:

1)傳統的通訊方式:無名管道,有名管道和訊號。

2)對於sys 5 的程序間通訊採用了共享記憶體,訊息佇列和訊號燈的形式。

3)bsd,對於一般網路間的通訊採用來套接字的方式實現。

1)無名管道的機制以及建立

對於無名管道只是用於父子程序之間的通訊,採用的是半雙工的方式讀寫操作的,這裡核心系統以及預設在無名管道了fd[0]是管道的讀端fd[1]是管道的寫端

對於管道可以看成是一種特殊的檔案,管道是基於特殊的檔案描述符的通訊方式,對於他的讀寫尅使用read和write函式來實現。

1)對於管道的建立以及讀寫函式,如下:

#include

#include

#include

#include

#define n 20

int pid1,pid2;

int main ()

elseelse

} return 0;

}

2)管道的讀寫應該注意的:

①當管道中午資料寫入時,讀端會一直處於阻塞狀態,

②向管道寫出具的時候,linux不會保持院子特性,若果管道中有閒著空間時,寫程序會試圖向管道寫入資料,如果讀程序不讀走管道緩衝區的資料,那麼寫操作會一直阻塞

⑶只有讀端存在時,寫資料才有意義

unix程序間通訊

程序間通訊主要可以分為兩大類 1.傳遞控制資訊 程序間的低階通訊 2.傳送大批量資料 程序間的高階通訊 主要的通訊方式主要有 1.主從式通訊方式 master servant communication 通訊的程序雙方存在一種主從式的隸屬關係。主程序是程序的控制者,從程序是程序的從屬者。主要有以下特...

Unix程序間的通訊

1.管道可以用作父子程序之間的通訊,pipe函式,將fd 0 開啟用於讀取資料,fd 1 開啟用於寫入資料。通常,對於單方向通訊,讀端會關閉寫fd,即fd 1 寫端會關閉讀fd,即fd 0 int main read fd 0 buf,30 sleep 2 write stdout fileno,b...

Unix環境程序間通訊(二)

struct shmid ds struct ipc perm 4.4 include include 開啟建立儲存段 int shmget key t key,size t size,int shm 返回 失敗 1,成功返回非負的共享儲存段 id 第乙個引數 key是共享儲存關鍵字。它有特殊值 i...