程序之間常用的通訊方式有:
(1)無名管道(具有親緣關係的父子程序)
(2)有名管道(任意兩個程序)
(3)訊號
(4)訊息佇列
(5)記憶體共享
(6)訊號量(一般是程序之間同步的手段,一般配合互斥鎖、條件變數一起使用)
(7)socket套接字
現在介紹最簡單的無名管道,用到的api函式如下:
比較簡單,我們可以定義乙個陣列pipe_fd[2]來表示管道的兩端,其中pipe_fd[0]是從管道讀取資料,pipe_fd[1]是向管道寫入資料,由於只用於父程序和子程序之間通訊,需要在建立子程序之前建立管道,這樣子程序才能繼承建立的管道,具體**如下
#include
#include
#include
#include
#include
#include
#include
/*** 無名管道是半雙工的,管道兩端的程序任何時候要麼是讀,要麼是寫
* **/
int main()
/********建立子程序*************/
pid = fork();
if(pid <0)
else if(pid>0)
else
編譯結果如圖:
在mt7688板子上執行結果:
好了,就這麼多。
程序之間的通訊 有名管道和無名管道
四 程序之間的通訊。1 為什麼要學習程序之間的通訊?例如 1 開啟了乙個名字為1的程序。2 開啟了乙個名字為2的程序。通過學習程序之間的通訊,使得不同的程序之間都是可以實現資料的交換。例如程序1傳送資料給程序2,程序2收到資料之後,根據資料來做不同的事情。間接地實現程序1控制程序2 2 在linux...
程序通訊 無名管道
管道是單向的 先進先出的,它把乙個程序的輸出和另乙個程序的輸入連線在一起。管道包括無名管道和有名管道兩種,前者用於父程序和子程序間的通訊,後者可用於執行於同一系統中的任意兩個程序間的通訊。乙個程序 寫程序 在管道的尾部寫入資料,另乙個程序 讀程序 從管道的頭部讀出資料。管道提供了簡單的流控制機制,程...
linux程序通訊 無名管道
linux無名管道通訊特點無名管道是半雙工的通訊方式,資料只能一方傳送,另一方接收。無名管道只適用於親緣關係的程序通訊。資料的讀出和寫入 乙個程序向管道中寫的內容被管道另一端的程序讀出。寫入的內容每次都新增在管道緩衝區的末尾,並且每次都是從緩衝區的頭部讀出資料。include include inc...