IPC(一)---------匿名管道
一、管道的分類
管道分為匿名管道和命名管道。
匿名管道:
(1)、在關係程式中進行(父程式和子程式、兄弟程式之間)
(2)、由pipe系統呼叫,管道由父程式建立。
(3)、 管道位於核心空間、其實是一塊快取。
命名管道:
(1)、任何兩個程式間都可通過命名管道進行資料傳輸。
(2)、通過系統呼叫mkfifo建立。
(3)、本質是核心中的一塊快取,另外在檔案系統中以一個特殊的裝置檔案(管道檔案)存在。
二、本篇主要講匿名管道:
管道建立:
#include <unistd.h>
int pipe(int fd[2]);
返回: 成功返回0,出錯返回-1;
fd[0]: 為pipe的讀端
fd[1]:為pipe的寫端
三、管道建立和讀寫程式碼:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
int main()
{
int fd[2];
pid_t pid;
//管道建立成功後,fd[0]是讀管道,fd[1]是寫管道
if(pipe(fd) < 0)
{
printf("pipe error\n");
exit(-1);
}
if((pid = fork())< 0)
{
printf("fork error\n");
exit(-1);
}
if(pid == 0)//子程式
{
close(fd[0]);//子程式關掉讀管道
printf("child process\n");
int start = 1,end = 100;
write(fd[1],&start,sizeof(start));
write(fd[1],&end,sizeof(end));
exit(0);
}
else
{
printf("parent child\n");
close(fd[1]);//父程式關掉寫管道
int start = 0,end = 0;
read(fd[0],&start,sizeof(start));
read(fd[0],&end,sizeof(end));
printf("start=%d,end=%d\n",start,end);
exit(0);
}
return 0;
}
執行結果:
相關文章
- IPC實現機制(一)---pipe(匿名管道)
- IPC和管道簡介(轉)
- linux系統程式設計之管道(一):匿名管道(pipe)Linux程式設計
- 匿名管道通訊實現
- 【IPC程式間通訊之二】管道PipeC程式
- Linux系統程式設計之匿名管道Linux程式設計
- Windows程式通訊之一看就懂的匿名管道通訊Windows
- C#使用匿名管道在本地程式之間進行通訊C#
- dotnet 替換 ASP.NET Core 的底層通訊為命名管道的 IPC 庫ASP.NET
- IPC call
- 程式間通訊(一)管道
- IPC__ALL
- IPC連結
- 【IPC程式間通訊之一】郵槽MailSlotC程式AI
- IPC之套接字
- IPC 方法分類
- android binder ipcAndroid
- IPC小知識
- Android的IPC機制(一)——AIDL的使用AndroidAI
- 一份詳盡的IPC$入侵資料 (轉)
- angular 管道Angular
- redis管道Redis
- 管道pipe
- Filter管道Filter
- 一行命令搭建內部的管道
- 演算法鏈與管道(上):建立管道演算法
- 程式間通訊 --IPC
- IPC send completion sync
- Android Binder IPC分析Android
- IPC Send timeout detected
- 匿名物件物件
- 速度不夠,管道來湊——Redis管道技術Redis
- 介紹 Linux 中的管道和命名管道Linux
- 一文學會Vue中介軟體管道Vue
- mongodb 聚合管道MongoDB
- 【linux】管道!!!Linux
- windows命名管道Windows
- Linux 管道Linux