国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

【linux】匿名管道pipe

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

區(qū)。pipe函數(shù)調(diào)用成功返回0,調(diào)用失敗返回-1。

1父進(jìn)程調(diào)用pipe開辟管道,得到兩個(gè)文件描述符指向管道的兩端。2. 父進(jìn)程調(diào)用fork創(chuàng)建?進(jìn)程,那么子進(jìn)程也有兩個(gè)文件描述符指向同一管道。3. 父進(jìn)程關(guān)閉管道讀端,子進(jìn)程關(guān)閉管道寫端。父進(jìn)程可以往管道里寫,子進(jìn)程可以從管道?讀,管道是用環(huán)形隊(duì)列實(shí)現(xiàn)的,數(shù)據(jù)從寫端流入從讀端流出,這樣就實(shí)現(xiàn)了進(jìn)程間通信。

例如

#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;}結(jié)果


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 钟山县| 宁明县| 阿鲁科尔沁旗| 垦利县| 孝昌县| 本溪市| 防城港市| 灌阳县| 静乐县| 石棉县| 平和县| 郓城县| 彰化县| 凯里市| 岑巩县| 科技| 时尚| 永年县| 榆社县| 舒兰市| 义乌市| 慈溪市| 时尚| 自贡市| 南陵县| 长岭县| 灵台县| 郴州市| 达日县| 余庆县| 望都县| 鄂尔多斯市| 苏尼特左旗| 于都县| 蓬溪县| 韩城市| 阿合奇县| 庆元县| 禄劝| 寿光市| 景泰县|