php 进程间通信:管道、uds

1、管道

1.1、管道概念

  • 管道是单向的、先进先出的,它把进程的输出和另一个进程的输入连接在一起。
  • 一个进程往管道写入数据,另一个进程从管道读取数据。
  • 数据被从管道中读取出来之后,将被删除,其他进程无法在读取到相应的数据。
  • 管道提供了简单的流控制,进程读取空管时候,将被阻塞。同时进程写入一个满了的管道会被阻塞,直到另一方写入或者读取管道。
  • 管道包含无名管道和有名管道,前者用于父进程和子进程之间的通信,后者用于任意两个进程之间的通信。

多个进程同时读写会发生什么事情?
管道怎么判断满了?

1.2、管道涉及的函数

posix_mkfifo(string $pathname, int $mode):bool : 创建一个有名管道,参数如下

  • pathname : 创建管道的路径。
  • mode : 管道文件的权限模式。参考liunx 文件权限 例 0666、0755、0777

unlink(string $pathname):bool : 删除管道文件,参数如下

  • pathname : 文件路径

1.3、举个栗子

注:当前模式为阻塞模式,只有当fread 读取到对应的size大小时,才会返回,否则将阻塞运行。可以使用 stream_set_blocking(resource $pathname,false);来使用非阻塞模式;

2、UDS

你可能感兴趣的:(php,开发语言)