做网站那个公司,18款免费软件app下载,wordpress挂下载链接,做外贸网站哪家效果好1、管道
1.1、管道概念
管道是单向的、先进先出的#xff0c;它把进程的输出和另一个进程的输入连接在一起。一个进程往管道写入数据#xff0c;另一个进程从管道读取数据。数据被从管道中读取出来之后#xff0c;将被删除#xff0c;其他进程无法在读取到相应的数据。管…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、举个栗子
?php
$pathname./.getmypid()..pipe;
if(!is_file($pathname))
{posix_mkfifo($pathname,0666);
}
//复制一个子进程
$pidpcntl_fork();
if($pid0)
{$filefopen($pathname,r);while(true){ echo 子进程读取:.fread($file,20).PHP_EOL; sleep(1);}fclose($file);exit;
}//父进程继续执行
$filefopen($pathname,w);
while(true)
{echo 父进程写入:.fwrite($file,time()).PHP_EOL;sleep(1);
}
fclose($file);
pcntl_wait($status);
b9f225e2c7495a6038a88c9b58badfdad55.jpg注当前模式为阻塞模式只有当fread 读取到对应的size大小时才会返回否则将阻塞运行。可以使用 stream_set_blocking(resource $pathname,false);来使用非阻塞模式
2、UDS