当前位置:   article > 正文

进程间通信之Linux管道编程_write(fd[1],writebuf,sizeof(writebuf))

write(fd[1],writebuf,sizeof(writebuf))

管道简述

管道(pipe)是Unix/Linux中最常见的进程间通信方式之一,它在两个进程之间实现一个数据流通的通道,数据以一种数据流的方式在进程间流动。在系统中,管道相当于文件系统上的一个文件,用于缓存所要传输的数据。在某些特性上又不同于文件,例如当数据读出后,管道中就没有数据了,但文件没有这个特性。管道有两个特点:

·部分系统下的管道是半双工的,数据在同一时间只能向一个方向流动。从实现的角度看,Linux内核采用环形缓冲区实现管道,如果允许同时读写,可能会导致数据冲突,Linux采用锁机制来防止同时读写。

·管道通常来说只能在具有亲属关系(父子进程、兄弟进程)的进程间使用。

管道(也称为匿名管道)是Linux中最古老的进程间通信机制,其应用非常广泛,也为用户在shell中提供了相应的管道操作符“|”。操作符“|”将其前后两个命令连接到一起,前一个命令的输出成为后一个命令的输入,且可以支持使用多个“|”连接多个命令。

管道特点

·管道没有名字,所以也称为匿名管道

·管道是半双工的,数据只能向一个方向流动,需要双向通信时,需要建立起两个管道。

·只能用于父子进程或兄弟进程之间。

·管道对于其两端的进程而言只是一个文件,但它不是普通的文件,它不属于操作系统的某种文件系统,而是单独构成一种文件系统,并且只存在于内存中。

·管道传送的是无格式字节流,这就要求使用管道的通信双方必须事先约定好数据的格式。

管道实现

  1. /**
  2. * struct pipe_buffer - a linux kernel pipe buffer
  3. * @page: the page containing the data for the pipe buffer
  4. * @offset: offset of data inside the @page
  5. * @len: le
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/212029
推荐阅读
相关标签
  

闽ICP备14008679号