管道:1.管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;
2.只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);
3.单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统, 并且只存在与内存中;
4.数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据;
5.管道通信是于流式符的;
6.管道的生命周期是随进程的;
7.管道已经给进程提供了同步与互斥;
pipe:
当一个管道建立时,它会创建两个文件描述符pipefd[0]和pipefd[1]。其中pipefd[0]固定用于读管道,而pipefd[1]固定用于写管道,一般文件I/O的函数都可以用来操作管道。
测试pipe的大小