进程之间的通信方式
进程之间的通信方式有管道、消息队列、共享内存、信号量和Socket。 管道 来看一条Linux的指令: netstat - tulnp | grep 8080 学过Linux命名的估计都懂得这条指令的含义,其中的【|】就是管道的意思,作用是把前一条命令的输出作为后一条命令的输入。在这里就是把netstat -tulnp的输出结果作为grep 8080这条指令的输入。如果两个进程要进行通信的话,就可以用这种管道进行通信了,并且这种通信方式是单向的,只能把第一个命令的输出作为第二个命名的输入,如果进程之间想要互相通信的话,就需要创建两个管道。 另外我们可以知道,这条竖线是没有名字的,我们把这种通信方式称之为匿名管道。既然有匿名管道,那就意味着有命名管道,下面我们来创建一个命名管道: mkfifo test 这条命令创建了一个名字为test的命名管道。 接下来我们用一个进程向这个管道里面写数据,然后会有另外一个进程把里面的数据读出来。 echo "this is a pipe" > test // 写入数据 这个时候管道的内容没有被读出来的话,那么这个命令就会一直停在这里,只有当另一个进程把test里面的内容读出来的时候,这条命令才会结束。 cat < test // 读数据 我们可以看到,test里面的数据被读出来了,上一条命令也就执行结束了。 从上面的例子可以看出