Linux 程序間通訊的方式

2021-08-18 10:59:55 字數 1084 閱讀 4983

目的:通訊分類

管道:管道分為匿名管道和命名管道

int pipe(int fd[2]);

fd[0]---->表示讀

fd[1]---->表示寫

由fork()來共享管道原理

父程序:關掉fd[1]               子程序:關掉fd[0]

特點:        只能用於具有共同祖先的程序之間通訊,乙個管道由乙個程序建立,該程序呼叫fork(),此後父子程序可以共享該管道。

生命週期隨程序

提供流式服務

半雙工通訊,資料只能向乙個方向流動

2、命名管道:在不相關的程序間交換資料

建立方法:命令建立:mkfifo    filename

函式建立:int mkfifo(filename,mode)

兩種管道的區別:匿名管道由pipe建立並開啟,命名管道由mkfifo建立,由open開啟

工作完成後,具有相同的意義

訊息佇列

共享記憶體

特點:最快的程序間通訊方式

共享記憶體函式及引數代表含義

訊號量主要用於同步和互斥

同步:多個程序相互配合完成一項工作

互斥:各程序要求共享資源,有些資源要求互斥使用,程序間就會競爭這些資源,就叫程序間互斥。

訊號量與p,v操作:

訊號量:互斥:pv在同乙個程序中    同步:pv在不同程序中

訊號量值得含義:

>0   表示可用資源數

=0 表示無資源可用

<0 表示等待佇列中程序個數

訊號量的函式及其引數

以上就是程序間通訊的四種方法啦~

linux 程序間通訊方式

1 無名管道通訊 無名管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。2 高階管道通訊 高階管道 popen 將另乙個程式當做乙個新的程序在當前程式程序中啟動,則它算是當前程式的子程序,這種方式我們成為高階管道方式...

Linux程序間通訊方式

目錄前言 一 程序間通訊的目的 二 linux程序間通訊方式簡介 程序間的通訊就是在不同程序之間傳播或者交換資訊。程序的使用者空間是相互獨顯然可以體用這幾樣的立的,一般而言是不能互相訪問的,唯一的例外是共享空間。但是系統空間卻是 公共場所 所以核心顯然可以提供這樣的條件。除此以外,那就是雙方都可以訪...

linux程序間通訊方式

1 管道 pipe 2 命名管道 named pipe 3 訊號 signal 4 訊息 message 佇列 5 共享記憶體 6 訊號量 semaphore 7 套接字 socket 1 管道 pipe 管道可用於具有親緣關係程序間的通訊,允許乙個程序和另乙個與它有共同祖先的程序之間進行通訊。2 ...