linux管道通訊之匿名管道

2021-08-19 05:49:35 字數 771 閱讀 4774

管道檔案的大小始終是為0,更多的時候,它只是起乙個標識作用,標識核心中的那塊快取區。就會出現所謂的匿名管道(比如父子程序之間的通訊)。

使用pipe建立匿名管道,看不到pipe檔案。

pipe(int fds[2]); // fds[0] 讀,fds[1]寫

返回2個檔案描述符,乙個讀檔案描述符,乙個寫檔案描述符。

匿名管道只適用於父子程序

案例:使用2個子程序,分別計算1-5000的素數,5001-10000的素數。主程序負責儲存資料到檔案。

pipe.c

#include

#include

#include

#include

#include

#include

#include

#include

int numchild = 0; //子程序數全域性變數

void childprocend(int s)

if(numchild == 2)

}int issushu(int num)

return 1;

}int main()

if(numproc == 1)

if(fork() > 0)//在主程序裡建立

else

exit(0);//當子程序事情做完後退出,是退出的子程序而不是父程序

//子程序退出,等待主程序的**,以防僵死程序

//break;}}

}return 0;

}

Linux程序通訊 匿名管道

linux程序通訊中最為簡單的方式是匿名管道 匿名管道的建立需要用到pipe函式,pipe函式引數為乙個陣列 表示的檔案描述字。這個陣列有兩個檔案描 述字,第乙個是用 於讀資料的檔案描述符 第二個是用於寫資料的檔案描述符。不能將用於寫的檔案描述 符進行讀操作或者進行讀的檔案描述 符進寫操作,這樣都會...

Linux程序通訊之管道(匿名,命名)

每個程序各 自有不同的 使用者位址空間,任何 乙個程序的全域性變數在另 乙個程序中都看不到 所以進 程之間要交換資料必須通過核心,在核心中開闢 一塊緩衝區,程序1把資料從 使用者空間 拷到核心緩 沖區,程序2再從核心緩衝區把資料讀 走,核心提供的這種機制稱為程序間通訊 ipc,interproces...

Linux 程序間通訊之匿名管道

程序間通訊 目的 分類 管道 把乙個程序連線到另乙個程序的乙個資料流稱為管道 匿名管道 include 建立乙個無名管道 intpipe int pipefd 2 pipefd 檔案描述附陣列 pipefd 0 表示讀端,pipefd 1 表示寫端 成功返回0 失敗返回錯誤 呼叫pipe函式的程序 ...