linux下的消息管道的聊天程序实现项目3432.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《linux下的消息管道的聊天程序实现项目3432.docx》由会员分享,可在线阅读,更多相关《linux下的消息管道的聊天程序实现项目3432.docx(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、作者:叶建敏 QQ:230817742 2010年4月22日 15:12:56 在linux下使用管道来进行聊天的小程序1管道管道是一种最基本的IPC机制,由pipe函数创建:#inclludee int ppipee(innt ffileedess2);调用pippe函数数时在内内核中开开辟一块块缓冲区区(称为为管道)用用于通信信,它有有一个读读端一个个写端,然然后通过过filledees参数数传出给给用户程程序两个个文件描描述符,filedes0指向管道的读端,filedes1指向管道的写端(很好记,就像0是标准输入1是标准输出一样)。所以管道在用户程序看起来就像一个打开的文件,通过rea
2、d(filedes0);或者write(filedes1);向这个文件读写数据其实是在读写内核缓冲区。pipe函数调用成功返回0,调用失败返回-1。开辟了管道道之后如如何实现现两个进进程间的的通信呢呢?比如如可以按按下面的的步骤通通信。1. 父进进程调用用pippe开辟辟管道,得得到两个个文件描描述符指指向管道道的两端端。2. 父进进程调用用forrk创建建子进程程,那么么子进程程也有两两个文件件描述符符指向同同一管道道。3. 父进进程关闭闭管道读读端,子子进程关关闭管道道写端。父父进程可可以往管管道里写写,子进进程可以以从管道道里读,管管道是用用环形队队列实现现的,数数据从写写端流入入从读端
3、端流出,这这样就实实现了进进程间通通信。例管道#inclludee #inclludee #defiine MAXXLINNE 880int mmainn(vooid)int nn; int ffd22;pid_tt piid;char linneMMAXLLINEE; if (pippe(ffd) 00) perrror(piipe); exitt(1); If (piid = foork() 00) /* paarennt */ closse(ffd00); writee(fdd1, helllo worrldn, 122); waitt(NUULL); ellse /* chhildd
4、*/ closee(fdd1); n = reaad(ffd00, linne, MAXXLINNE); writee(STTDOUUT_FFILEENO, liine, n); retuurn 0;使用管道有有一些限限制:两个进程通通过一个个管道只只能实现现单向通通信,比比如上面面的例子子,父进进程写子子进程读读,如果果有时候候也需要要子进程程写父进进程读,就就必须另另开一个个管道。请请读者思思考,如如果只开开一个管管道,但但是父进进程不关关闭读端端,子进进程也不不关闭写写端,双双方都有有读端和和写端,为为什么不不能实现现双向通通信?管道的读写写端通过过打开的的文件描描述符来来传递,因因此要
5、通通信的两两个进程程必须从从它们的的公共祖祖先那里里继承管管道文件件描述符符。上面面的例子子是父进进程把文文件描述述符传给给子进程程之后父父子进程程之间通通信,也也可以父父进程fforkk两次,把把文件描描述符传传给两个个子进程程,然后后两个子子进程之之间通信信,总之之需要通通过foork传传递文件件描述符符使两个个进程都都能访问问同一管管道,它它们才能能通信。使用管道需需要注意意以下44种特殊殊情况(假假设都是是阻塞II/O操操作,没没有设置置O_NNONBBLOCCK标志志):1. 如果果所有指指向管道道写端的的文件描描述符都都关闭了了(管道道写端的的引用计计数等于于0),而而仍然有有进程
6、从从管道的的读端读读数据,那那么管道道中剩余余的数据据都被读读取后,再再次reead会会返回00,就像像读到文文件末尾尾一样。2. 如果果有指向向管道写写端的文文件描述述符没关关闭(管管道写端端的引用用计数大大于0),而而持有管管道写端端的进程程也没有有向管道道中写数数据,这这时有进进程从管管道读端端读数据据,那么么管道中中剩余的的数据都都被读取取后,再再次reead会会阻塞,直直到管道道中有数数据可读读了才读读取数据据并返回回。3. 如果果所有指指向管道道读端的的文件描描述符都都关闭了了(管道道读端的的引用计计数等于于0),这这时有进进程向管管道的写写端wrritee,那么么该进程程会收到到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 消息 管道 聊天 程序 实现 项目 3432
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内