麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

【linux】匿名管道pipe

2019-11-08 19:52:36
字體:
來源:轉載
供稿:網友
管道是一種最基本的ipC機制,由pipe函數創建: #include <unistd.h>int pipe(int filedes[2]); 調用pipe函數時在內核中開辟一塊緩沖區(稱為管道)用于通信,它有一個讀端一個寫端,然后通過filedes參數傳出給用戶程序兩個文件描述符,filedes[0]指向管道的讀端,filedes[1]指向管道的寫端(很好記,就像0是標準輸?1是標準輸出一樣)。所以管道在用戶程序看起來就像一個打開的文件,通過read(filedes[0]);或者write(filedes[1]);向這個文件讀寫數據其實是在讀寫內核緩沖

區。pipe函數調用成功返回0,調用失敗返回-1。

1父進程調用pipe開辟管道,得到兩個文件描述符指向管道的兩端。2. 父進程調用fork創建?進程,那么子進程也有兩個文件描述符指向同一管道。3. 父進程關閉管道讀端,子進程關閉管道寫端。父進程可以往管道里寫,子進程可以從管道?讀,管道是用環形隊列實現的,數據從寫端流入從讀端流出,這樣就實現了進程間通信。

例如

#include<stdio.h>#include<unistd.h>#include<errno.h>#include<string.h>#include<sys/wait.h>int main(){	int fds[2]={		-1,-1	};	if(pipe(fds)<0)	{		PRintf("pipe error.%s/n",strerror(errno));		return 2;	}	pid_t id=fork();	if(id==0)	{		close(fds[0]);        int count=5;		char* msg="hello world/n";		while(count--)		{			write(fds[1],msg,strlen(msg));			printf("write success. %d/n",count);		}		close(fds[1]);	}	else{		close(fds[1]);		int count=0;		char buf[1024];		while(count++<10){			ssize_t s=read(fds[0],buf,sizeof(buf)-1);			if(s>0)			{				buf[s]='/0';			}			printf("father msg from child:%s",buf);			if(waitpid(id,NULL,0)<0)			{			   return 3;			}		}	}	return 0;}結果


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产成人精品午夜视频' | 国产一区二区免费在线观看 | 久草成人在线 | 夜间福利网站 | 色偷偷一区 | 草草影院地址 | 国产精品久久久久久久久久了 | 精品无吗乱吗av国产爱色 | 久久毛片 | 欧美色淫 | 久草在线资源视频 | 国产一区二区三区视频在线观看 | 国产女厕一区二区三区在线视 | 性生活香蕉视频 | 精品国产一区二区三区蜜殿 | 久草在线高清视频 | 亚洲第一成人在线 | 国产在线地址 | 国产成人高潮免费观看精品 | 国产精品自拍啪啪 | 丰满年轻岳中文字幕一区二区 | 国内精品视频饥渴少妇在线播放 | 亚洲第一成人久久网站 | 国产日韩在线观看视频 | 久草在线视频免费播放 | 一级毛片真人免费播放视频 | 亚洲午夜激情网 | 午夜精品老牛av一区二区三区 | 色淫影院 | 欧美xxxx精品另类 | 国产成人精品区一区二区不卡 | 国产羞羞视频 | 日韩精品中文字幕在线观看 | 亚洲日韩中文字幕一区 | 一级黄色在线免费观看 | 性生活视频软件 | 久久精品视频69 | 精品国产1区2区3区 av视屏 | 久久久麻豆 | 精品爱爱| 国产资源在线观看视频 |