【1、管道概念】

* 管道是单向的、先进先出的,他把进程的输出和另一个进程的输入连接在一起。

* 一个进程在管道的尾部写入数据,另一个进程在管道的头部读取数据。

* 数据被从管道中读取出来之后,将被删除,其他进程无法在读取到相应的数据。

* 管道提供了简单的流控制,进程读取空管时候,将被阻塞。同时进程写入一个满了的管道也将被阻塞,知道另一方写入或者读取管道。

* 管道包含无名管道和有名管道,前者用于父进程和子进程之间的通信,后者用于任意两个进程之间的通信。本文主要讲有名管道

【2、管道涉及的函数】

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

* pathname : 创建管道的路径。

* mode  : 管道文件的权限模式。参考liunx 文件权限 例 0666、0755、0777

unlink(string $pathname):bool    : 删除管道文件

* pathname  : 文件路径

【3、举个栗子】

$pathname='./'.getmypid().'.pipe';

if(!is_file($pathname))

{

posix_mkfifo($pathname,0666);

}

//复制一个子进程

$pid=pcntl_fork();

if($pid==0)

{

$file=fopen($pathname,'r');

while(true)

{

echo '子进程读取:'.fread($file,20).PHP_EOL;

sleep(1);

}

fclose($file);

exit;

}

//父进程继续执行

$file=fopen($pathname,'w');

while(true)

{

echo '父进程写入:'.fwrite($file,time()).PHP_EOL;

sleep(1);

}

fclose($file);

pcntl_wait($status);

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

php 管道,PHP 进程间通信---管道篇相关推荐

  1. 61-Linux_管道_有名管道

    文章目录 管道 1.有名管道 (1)创建有名管道 (2)有名管道演示进程间通信 管道 管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递.调用pipe系统函数即可创建一个管道.有如 ...

  2. 进程间通信管道进阶篇:linux下dup/dup2函数的用法

    由于利用管道实现进程间通信,是通过创建两个文件描述符,但是描述符的初始化是通过随机的,就是从可用的文件描述符中取出,并将可用的文件描述符与file对象相关联,如果我们需要将管道的两头与其他的流相关时, ...

  3. 管道实现进程间通信之命名管道

    进程间通信管道篇之命名管道 文章目录 1.1命名管道 1.2命名管道的创建 1.3命名管道和匿名管道的区别 代码演示(用命名管道实现进程间通信) 2.1 通过进程间通信将客户端发送的字符串转化为命令让 ...

  4. Linux下进程间通信——管道

    进程间通信 一.进程间通信 1.进程间通信--管道 (1)有名管道的创建 (2)有名管道的操作 写操作 读操作 发生阻塞和关闭程序的几种情况 2.无名管道的创建 (1)无名管道的操作 3.管道读取数据 ...

  5. Linux进程间通信——管道

    转自:http://www.cnblogs.com/feisky/archive/2010/03/24/1693484.html Linux进程间通信机制: 1.同一主机进程间通信机制: Unix方式 ...

  6. 操作系统实验报告9:进程间通信—管道和 socket 通信

    操作系统实验报告9 实验内容 实验内容:进程间通信-管道和 socket 通信. 编译运行课件 Lecture11 例程代码: alg.11-3-socket-input-2.c alg.11-4-s ...

  7. 进程间通信:管道和命名管道(FIFO)

    目录 概述 IPC 对象的持续性 什么是管道 读取外部程序的输出 将输出送往 popen 传递更多的数据 如何实现 popen pipe 调用 跨越 fork 调用管道 父进程和子进程 管道关闭后的读 ...

  8. Linux进程间通信(管道、消息队列、共享内存、信号、信号量)

    目录 Linux进程间通信概述 1.管道 无名管道(pipe) 有名管道(fifo) 2.消息队列(msg) 消息队列的通信原理 消息队列相关api 消息队列收发数据 键值生成 消息队列移除 3.共享 ...

  9. Linux系统【四】进程间通信-管道

    进程间通信(IPC Interprocess Communication) 进程和进程之间的通信只能通过内核,在内核中提供一块缓冲区进行通信.内核提供的这种机制叫做IPC 在进程间完成数据传输需要借助 ...

最新文章

  1. [个人博客作业Week7]软件工程团队项目感想与反思
  2. HD_2037今年暑假不AC
  3. PHP函数——urlencode() 函数
  4. Sql Server系列:视图
  5. 不思议迷宫c语言基础,不思议迷宫——新手入门所学
  6. 理解SQL Server是如何执行查询的 (2/3)
  7. 灵动标签调用文章每隔3条样式不同
  8. QString转HTuple
  9. Confluence 6 导入 Active Directory 服务器证书 - Windows
  10. websocket实时聊天(一)
  11. 建筑师学python有用吗_建筑师为什么要学编程?
  12. 计划行为理论(TPB,Theory of Planned Behavior)
  13. windows7内部版本7601此副本不是正版 桌面背景黑屏
  14. 复合函数的间断点问题总结
  15. clickhouse 集群异常排查处理总结
  16. MyBatis 多对多关联映射
  17. python地图可视化
  18. 64. Minimum Path Sum 路径最小总和
  19. S3C2440时钟和电源管理:空闲模式:电源管理模块断开CPU时钟FCLK,而只给外设提供时钟,CPU不耗时钟,故而减少功耗,任何中断请求都可将CPU从空闲模式唤醒。
  20. 预期与实际运行结果的对比

热门文章

  1. 中点坐标公式 矩形_2019南充第16题——平面直角坐标系、矩形、K字型相似、运动与最值...
  2. python程序员月薪-月薪30k的资深程序员用Python爬取了知乎百万用户!并数据分析!...
  3. python没基础能自学吗-没有基础先要自学python,有什么比较好的书推荐?
  4. python适合自学编程吗-对于0基础的人,直接学 Python 编程合适吗?
  5. python软件下载对电脑配置要求-python3批量统计用户电脑配置
  6. 爬虫python能做什么-Python除了能做爬虫之外还能做什么?
  7. android 4实例分析,OpenGL Shader实例分析(4)闪光效果
  8. JavaScript面向对象之Object类型
  9. Node-ES6模块化
  10. Node-require的加载机制