课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
进程间通信是程序员在学习软件编程开发技术的时候需要重点掌握的一个编程知识,而今天我们就通过案例分析来了解一下,程序员使用管道实现进程间通信需要注意哪些问题。
管道读写规则
当没有数据可读时
O_NONBLOCKdisable:read调用阻塞,即进程暂停执行,.一直等到有数据来到为止。
O_NONBLOCKenable:read调用返回-1,errno值为EAGAIN。
当管道满的时候
O_NONBLOCKdisable:write调用阻塞,直到有进程读.走数据
O_NONBLOCKenable:调用返回-1,errno值为EAGAIN
如果所有管道写端对应的文件描述符被关闭,则read返回0
如果所有管道读端对应的文件描述符被关闭,则write操作会产生信号SIGPIPE,进而可能导致write进程退出
当要写.入的数据量不.大于PIPE_BUF时,linux将保证写.入的原.子性。
当要写.入的数据量.大于PIPE_BUF时,linux将不再保证写.入的原.子性。
管道特点
只能⽤用于具有共同祖先的进程(具有亲缘关系的进程)之间进⾏行通信;通常,一个管道由一个进程创建,然后该进程调⽤用fork,此后⽗父、⼦子进程之间就可应⽤用该管道。
管道提供流式服务
一般⽽而⾔言,进程退出,管道释放,所以管道的⽣生命周期随进程
一般⽽而⾔言,内核会对管道操作进⾏行同步与互斥管道是半双⼯工的,数据只能向⼀一个⽅方向流动;需要双⽅方通信时,需要建⽴立起两个管道
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。