php 管道,PHP 进程间通信---管道篇
【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 进程间通信---管道篇相关推荐
- 61-Linux_管道_有名管道
文章目录 管道 1.有名管道 (1)创建有名管道 (2)有名管道演示进程间通信 管道 管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递.调用pipe系统函数即可创建一个管道.有如 ...
- 进程间通信管道进阶篇:linux下dup/dup2函数的用法
由于利用管道实现进程间通信,是通过创建两个文件描述符,但是描述符的初始化是通过随机的,就是从可用的文件描述符中取出,并将可用的文件描述符与file对象相关联,如果我们需要将管道的两头与其他的流相关时, ...
- 管道实现进程间通信之命名管道
进程间通信管道篇之命名管道 文章目录 1.1命名管道 1.2命名管道的创建 1.3命名管道和匿名管道的区别 代码演示(用命名管道实现进程间通信) 2.1 通过进程间通信将客户端发送的字符串转化为命令让 ...
- Linux下进程间通信——管道
进程间通信 一.进程间通信 1.进程间通信--管道 (1)有名管道的创建 (2)有名管道的操作 写操作 读操作 发生阻塞和关闭程序的几种情况 2.无名管道的创建 (1)无名管道的操作 3.管道读取数据 ...
- Linux进程间通信——管道
转自:http://www.cnblogs.com/feisky/archive/2010/03/24/1693484.html Linux进程间通信机制: 1.同一主机进程间通信机制: Unix方式 ...
- 操作系统实验报告9:进程间通信—管道和 socket 通信
操作系统实验报告9 实验内容 实验内容:进程间通信-管道和 socket 通信. 编译运行课件 Lecture11 例程代码: alg.11-3-socket-input-2.c alg.11-4-s ...
- 进程间通信:管道和命名管道(FIFO)
目录 概述 IPC 对象的持续性 什么是管道 读取外部程序的输出 将输出送往 popen 传递更多的数据 如何实现 popen pipe 调用 跨越 fork 调用管道 父进程和子进程 管道关闭后的读 ...
- Linux进程间通信(管道、消息队列、共享内存、信号、信号量)
目录 Linux进程间通信概述 1.管道 无名管道(pipe) 有名管道(fifo) 2.消息队列(msg) 消息队列的通信原理 消息队列相关api 消息队列收发数据 键值生成 消息队列移除 3.共享 ...
- Linux系统【四】进程间通信-管道
进程间通信(IPC Interprocess Communication) 进程和进程之间的通信只能通过内核,在内核中提供一块缓冲区进行通信.内核提供的这种机制叫做IPC 在进程间完成数据传输需要借助 ...
最新文章
- [个人博客作业Week7]软件工程团队项目感想与反思
- HD_2037今年暑假不AC
- PHP函数——urlencode() 函数
- Sql Server系列:视图
- 不思议迷宫c语言基础,不思议迷宫——新手入门所学
- 理解SQL Server是如何执行查询的 (2/3)
- 灵动标签调用文章每隔3条样式不同
- QString转HTuple
- Confluence 6 导入 Active Directory 服务器证书 - Windows
- websocket实时聊天(一)
- 建筑师学python有用吗_建筑师为什么要学编程?
- 计划行为理论(TPB,Theory of Planned Behavior)
- windows7内部版本7601此副本不是正版 桌面背景黑屏
- 复合函数的间断点问题总结
- clickhouse 集群异常排查处理总结
- MyBatis 多对多关联映射
- python地图可视化
- 64. Minimum Path Sum 路径最小总和
- S3C2440时钟和电源管理:空闲模式:电源管理模块断开CPU时钟FCLK,而只给外设提供时钟,CPU不耗时钟,故而减少功耗,任何中断请求都可将CPU从空闲模式唤醒。
- 预期与实际运行结果的对比
热门文章
- 中点坐标公式 矩形_2019南充第16题——平面直角坐标系、矩形、K字型相似、运动与最值...
- python程序员月薪-月薪30k的资深程序员用Python爬取了知乎百万用户!并数据分析!...
- python没基础能自学吗-没有基础先要自学python,有什么比较好的书推荐?
- python适合自学编程吗-对于0基础的人,直接学 Python 编程合适吗?
- python软件下载对电脑配置要求-python3批量统计用户电脑配置
- 爬虫python能做什么-Python除了能做爬虫之外还能做什么?
- android 4实例分析,OpenGL Shader实例分析(4)闪光效果
- JavaScript面向对象之Object类型
- Node-ES6模块化
- Node-require的加载机制