目录
一,管道原理
进程具有独立性,所以要通信首先就是俩个进程要看到同一份资源,围绕这一点理解进程间通信:
1,首先父进程调用pipe函数创建管道:
2,父进程创建子进程:
fork();此时子进程实惠拷贝父进程的pcd内容数据的,也就相当于他和父进程都知道了同一个资源,这很重要,因为进程之间是有独立性的,只要写就会发生写实拷贝,所以来个进程要想交互就必须要有同一份资源。
3,然后就是根据需求关闭对应的读写
这里因为是管道是单项通信的,它里面比我话的要复杂一点,是由同步互斥机制的,但是原理就是这样。
我们假设父进程给子进程发消息,那么父进程写,子进程读。
4,由第三步可以知道,
父进程可以发消息给子进程了,但是子进程如何发消息给父进程呢,答案就是关系关闭文件对调一下,但是如果父子进程都想发消息,还邮箱收到消息呢,那么此时我们就可以创建俩个管道。注意这里的管道只能是由父进程创建的,只要这样才可以把文件指向"继承给子进程" ,所以,匿名管道也可以理解为血缘间的通信,一般是父子,兄弟之间。
二,匿名管道
1,创建管道pipe
俩个函数,第二个多了一个参数,看文档正确使用就好了。
pipe是一个输出线参数,打开的俩个文件描述符由一个数组待会来。
2,写一段父子通信的代码
我们假设由父进